我也遇到过这个问题。我定义了一个数组并用对象填充它, 如果第一种情况我的数据数组在 Firebug 控制台上看起来像这样:
data = [
Object { code="6", id="1073148", key="82628835"},
Object { code="17", id="2073140", key="83628837"}
]
当我检查它的长度时,我从 data.length
中得到 2
在第二种情况下我有
data = [
[Object { code="6", id="1073148", key="82628835"}],
[Object { code="17", id="2073140", key="83628837"}]
]
当我检查 data.length
时,这个也会返回 2
有人可以解释一下为什么我在这种不同的情况下得到相同的长度吗?
回答一些问题后进行编辑
数据是使用 $.parseJSON
填充的,令我困惑的是
在第一种情况下,我可以通过 data[0].code
访问代码的值,在第二种情况下
我无法通过 data[0][0].code
访问它
如果它们是数组的相同子级,为什么我无法使用相同的索引访问它们。 那为什么它们的长度相同呢?
最佳答案
因为两种情况下 data.length 都只有 2
进一步解释:
每个对象都包含多个值,但是,您不会调用这些对象的长度。
data.length = 获取数据中 child 的数量(不是孙子、表兄弟、侄子和侄子)只是 child 。
在这两种情况下,无论对象是什么,数据中都有 2 个对象,因此长度 = 2
进一步:
这些对象是什么并不重要,你可以有一个字符串和一个子数组,它仍然会返回 2,因为它是我们要求长度的对象内的 2 个对象
UPDATE to answer second question brought up
访问的原因很简单,首先,您的 child 是典型的对象,如您的示例所示:
data = [
// These two CHILDREN are Typical Objects
Object { code="6", id="1073148", key="82628835"},
Object { code="17", id="2073140", key="83628837"}
]
因此您可以将对象 1 作为数据[0]访问。
但是在第二个示例中,子项是 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 个子数组,每个数组都包含一个子对象。因此获取对象1的需求就变成了data[0][0]
其中 data[0] 获取第一个数组子对象,第二个 [0] 获取该数组子对象
明白了吗?
如果不告诉我!
关于javascript - javascript 数组的长度,其中项目是对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12186009/