我遇到了这个问题。我已经定义了一个数组并用对象填充它, 如果第一种情况,我的数据数组在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
如果它们是数组的子元素,为什么我不能使用相同的索引访问它们。 那为什么他们有相同的长度?
答案 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项。