Javascript:这是什么数据类型?

时间:2013-12-28 16:54:47

标签: javascript jquery

我正在使用API​​构建一些东西,但它没有很好地记录,所以我在猜测。 我有2个变量: g.nodes和g.edges,当我这样做时:

console.log(g.nodes);
console.log(g.edges);

我得到了g.nodes的输出:

Object {hello: Object, test: Object, test1: Object, test2: Object, test3: Object…} 

和g.edges:

[Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object]

我知道g.edges是一个数组,但是什么数据类型是g.nodes?

2 个答案:

答案 0 :(得分:2)

第一个g.nodes

只是一个javascript对象,但您可以将其视为HashMap或键值对。

,下一个是一个数组或类似于对象的数组,它可以是一个javascript对象,所有键都是数字,也可以是arguments类型的对象。

关于如何通过:

g.nodes你可以这样做:

for(var key in g.nodes){
    var value = g.nodes[key];
    console.log(typeof value);
}

对于数组,最好不要使用第一个迭代方法,因为除了数组的实际数据之外,它还可以迭代Array.prototype中定义的所有其他属性,例如,如果你添加它:

Array.prototype.myarray_prop = 1;

如果你使用for(var key in obj)方法,除了实际的数组值,myarray_prop将显示为一个键,只要我们通常使用数组,我们想要迭代实际的值数组,而不是这些额外的道具,使用for(var key in obj);

并不是一个好主意

所以对于g.edges你最好这样做:

for(var i=0;i<g.edges.length;i++){
    var edge = g.edges[i];
    console.log(typeof edge);
}

答案 1 :(得分:-2)

这是一个有趣的问题。让我们逐一讨论:

console.log(g.nodes);

输出表明这是一个对象。该Object的属性是:

  1. 你好
  2. 测试
  3. TEST1
  4. 等......
  5. 其次是一个对象的数组。这本质上是一个JavaScript对象集合。

    不要遇到此类问题的好方法是正确调试脚本

    调试JavaScript的好方法:

    每当您觉得自己不了解JavaScript流程时,请在FireFox,FireBug中运行该脚本并在所有重要位置插入断点。然后FireBug将显示每个变量的类型和状态。

    调试示例:

    function SayHello(){
    debugger;
    var msg = "Hello World";
    
    console.log(msg);
    
    }
    

    代码将在调试器处停止,您可以从那里看到步骤。你甚至可以看到变量的类型&#34; msg&#34;。

    希望这对您有所帮助。