项目为对象的javascript数组的长度

时间:2012-08-29 20:30:15

标签: javascript jquery

我遇到了这个问题。我已经定义了一个数组并用对象填充它, 如果第一种情况,我的数据数组在firebug控制台上看起来像这样:

data = [
    Object { code="6", id="1073148", key="82628835"},
    Object { code="17", id="2073140", key="83628837"}
]

当我检查其长度时,我从2

获得data.length

在第二种情况下,我有

data = [
    [Object { code="6", id="1073148", key="82628835"}],
    [Object { code="17", id="2073140", key="83628837"}]
]

当我检查2

时,这个也会返回data.length

有人可以解释我为什么我会为这种不同的情况获得相同的长度。

在一些答案后编辑 使用$.parseJSON填充数据让我感到困惑的是 在第一种情况下,我可以通过data[0].code和第二种情况访问代码的值 我无法通过data[0][0].code

访问它

如果它们是数组的子元素,为什么我不能使用相同的索引访问它们。 那为什么他们有相同的长度?

2 个答案:

答案 0 :(得分:4)

因为data.length在两种情况下只有2

进一步解释:

每个对象包含多个值,但是,您不需要调用这些对象的长度。

data.length =给我数据中的孩子数(不是孙子和表兄弟,ne and和侄子)JUST CHILDREN。

在这两种情况下,无论对象是什么,数据中都有2个,因此长度= 2

进一步:

这些对象是什么并不重要,你可以有一个字符串和一个子数组,它仍然会返回2,因为它将是我们要求长度的对象内的2个对象

  

更新 回答提出的第二个问题

访问的原因很简单,首先,您的孩子是典型的对象,如您的示例所示:

data = [ 
    //  These two CHILDREN are Typical Objects
    Object { code="6", id="1073148", key="82628835"}, 
    Object { code="17", id="2073140", key="83628837"} 
] 

因此,您可以将对象1作为数据[0]访问。

在第二个示例中

HOWEVER ,孩子们 ARRAY 类型对象,因此,每个孩子都可以有多个值。例如:

data = [   
    [Object { code="6", id="1073148", key="82628835"}],   
    [Object { code="17", id="2073140", key="83628837"}]   
]  
//  Your example here has 2 children but each child is an ARRAY type Object,
//  Each array has one child which is the object in each one
// thus you can call data[0][0] & data[1][0]
//  Could also be 
data = [   
    [Object { code="6", id="1073148", key="82628835"},   
    Object { code="17", id="2073140", key="83628837"}]   
]  
// in this later case, there is only one child
//  this one child, like in your example, is an ARRAY, but in this later example,
//  it has TWO children of its own
// thus you can call data[0][0] and data[0][1]

如您所见,您的第二个示例没有两个子对象,而是包含2个子ARRAYS,每个子对象包含一个子对象。因此,获取对象1的需求变为data[0][0]

其中data [0]获取第一个数组子节点而第二个[0]获取该数组子对象

得到它?

如果不只是让我知道!

答案 1 :(得分:3)

分开时很容易,见下文。

案例1:包含2个对象的数组。

data => [
         Object { code="6", id="1073148", key="82628835"}, 
         Object { code="17", id="2073140", key="83628837"}
        ]

案例2:包含2个数组的数组,每个数组都包含一个对象。

data => [
          [Object { code="6", id="1073148", key="82628835"}], 
          [Object { code="17", id="2073140", key="83628837"}]
        ]

所以长度为2,因为data.length在两种情况下都包含2项。