JavaScript数组长度问题
JavaScript array length issue
我对以下内容有点困惑:
当我对两个不同的数组执行console.log时,一个给我实际的长度,而另一个不给。
第一个数组的输出,长度合适:
[Object, Object, Object]
0: Object
1: Object
2: Object
length: 3
__proto__: Array[0]
第二个的输出,长度应该是4,但实际上是0:
[A: Object, B: Object, C: Object, D: Object]
A: Object
B: Object
C: Object
D: Object
length: 0
__proto__: Array[0]
为什么我的第一个数组有一个正确的长度,但不是第二个?
编辑:这是生成上述输出的代码:
var links = [
{source: "A", target: "B"},
{source: "A", target: "C"},
{source: "A", target: "D"}
];
var nodes = [];
// Compute the distinct nodes from the links.
links.forEach(function(link) {
link.source = nodes[link.source] || (nodes[link.source] = {name: link.source});
link.target = nodes[link.target] || (nodes[link.target] = {name: link.target});
});
console.log(links);
console.log(nodes);
第二个日志消息不能输出数组的长度,因为值已经分配给它的属性而不是它的索引,因为在数组的实际索引中没有对象(length
属性是0
)。这是因为数组不能包含非数字索引,如A、B、C、d。
所以当你执行:
var arr= [];
arr["b"] = "test";
代码实际上是将字符串文字测试分配给arr
数组的b
属性,而不是索引。这是可能的,因为数组在Javascript中是对象,所以它们也可以有属性。
Array对象的长度就是它的最高数值索引加1。第二个对象没有数字索引,因此其长度为0。
如果它是[ A: Object, B: Object, C: Object, 15: Object ]
,那么它的长度将是16。length
的值与实际属性的数量无关(在本例中为4)。
相关文章:
- 将子文档推送到父数组时遇到问题
- 从数组在d3中创建条形图时出现问题
- JavaScript/jQuery JSON数组问题-值为未定义
- JavaScript变量引用数组时出现问题
- Javascript中的多维数组排序索引问题
- JavaScript对象中存在数组的问题
- array_push平面数组问题-需要能够向数组中添加多个变量
- 多维数组 JAVASCRIPT 出了点问题
- javascript中的数组和if语句存在问题
- JavaScript的循环问题,将值插入数组将不起作用
- Javascript数组比较问题
- 设置和添加数组值javascript时出现问题
- 数组有什么问题
- 在Javascript/Google Maps Api中将结果放入数组时出现问题
- 尽管使用了off,click函数仍会触发,这可能也会导致数组问题
- azure移动服务中的数组长度问题
- 将数组从PHP传递到Javascript(Jquery)的问题,如常见答案所示
- 填充对象的Javascript数组时出现问题
- JavaScript——迭代一系列问题(数组/对象)
- 表单显示问题+数组下的结果