Javascript Array.length比Array长

Javascript Array.length比Array长,javascript,arrays,Javascript,Arrays,我从JavaScriptarray.length中获得了一些奇怪的行为。特别是,当数组中只有一个元素,索引为0时,我有一个数组返回长度为3。我读过处理数组.length返回的不正确值的文章,但它没有回答我的问题,因为我的数组似乎没有关联性 这是我的控制台的屏幕截图,展示了这种奇怪的行为 x.forEach(function(item) { alert(item); }); 代码抛出错误,因为我使用array.length在第一个数组上循环,代码试图访问它认为应该在数组中的第二个和第三

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

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

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

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


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

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

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

var x = [1,2,3];
x.length = 5;
使用for构造将导致一些未定义的值

for (var i = 0; i < x.length; i++) {
    alert(x[i]);
}
请注意,如果将数组长度更改为小于实际值的值,数组将丢失额外的元素,如果恢复原始值,额外的元素将永远丢失


引用:

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

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

var x = [1,2,3];
x.length = 5;
使用for构造将导致一些未定义的值

for (var i = 0; i < x.length; i++) {
    alert(x[i]);
}
请注意,如果将数组长度更改为小于实际值的值,数组将丢失额外的元素,如果恢复原始值,额外的元素将永远丢失


参考资料:

您能给我们提供一些代码吗?提前谢谢!代码很难复制。涉及应用程序的几个不同模块,以及相当多的异步性。很抱歉如果有一些特别有用的信息,我们很乐意从控制台中获取更多数据。您能提供数组吗?它只是一个,没有问题。分配给它的
.length=3
,但实际上没有输入任何值。或者使用的东西
删除
。如果没有生成此值的代码,我们无法说出为什么会出现此意外值,但它绝对是一个合法值。@Bergi-谢谢。这种联系起了作用。如果你把它作为答案贴出来,我会接受的。我也解决了我的代码问题。你能给我们提供一些代码吗?提前谢谢!代码很难复制。涉及应用程序的几个不同模块,以及相当多的异步性。很抱歉如果有一些特别有用的信息,我们很乐意从控制台中获取更多数据。您能提供数组吗?它只是一个,没有问题。分配给它的
.length=3
,但实际上没有输入任何值。或者使用的东西
删除
。如果没有生成此值的代码,我们无法说出为什么会出现此意外值,但它绝对是一个合法值。@Bergi-谢谢。这种联系起了作用。如果你把它作为答案贴出来,我会接受的。我还解决了我的代码问题。