繁体   English   中英

Array.length比数组长

[英]Array.length longer than array

我在JavaScript array.length得到了一些奇怪的行为。 特别是,我有一个数组返回长度为3,当数组中只有一个元素,索引为0.我读过这个问题/答案处理array.length返回的不正确的值,但它没有回答我的问题,因为我的数组似乎不是关联的。

这是我的控制台的屏幕截图,展示了奇怪的行为。

截图奇数阵列行为

代码抛出一个错误,因为我使用array.length循环遍历第一个数组,并且代码试图访问它认为应该在数组中的第二个和第三个元素,而不是找到它们。 数据库中的其他条目似乎没有此问题(请参见屏幕截图中的第二个数组)。

所以这就是问题:为什么第一个数组3中的array.length而不是1?

javascript中的length数组属性可以从任何人写入,并且不是查找数组中元素数量的可靠来源。

通常,可以安全地假设数组中包含长度元素,但有时您可以有不同的行为。 这是其中之一。

var x = [1,2,3];
x.length = 5;

使用for构造将导致一些未定义的值

for (var i = 0; i < x.length; i++) {
    alert(x[i]);
}

使用forEach Array方法会导致(至少在Firefox上)所需的行为。

x.forEach(function(item) {
    alert(item);
});

请注意,如果将数组长度更改为小于实际值的值,则数组将丢失额外元素,如果还原原始值,则额外元素将永远丢失。

参考: https//developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/length

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM