数组长度不正确

Tim*_*mon 6 javascript arrays

我有一个充满对象的数组.它总共包含23个项目,但是当我对它执行.length时,它返回20.

// Get the new routes
var array = PostStore.getPostList();

console.log(array.objects);
console.log(array.objects.length);
Run Code Online (Sandbox Code Playgroud)

我的控制台返回的图像:

数组长度

这里出了什么问题?

Den*_*ret 6

问题可能是阵列在您记录它的时间和在控制台中打开它的时间之间发生了变化.

要在记录时获取阵列,请克隆它:

console.log(array.objects.slice());
console.log(array.objects.length);
Run Code Online (Sandbox Code Playgroud)

请注意,这不会防止数组元素属性发生变化.如果你想要冻结它们,你需要深度克隆,这是最常见的

console.log(JSON.parse(JSON.stringify(array.objects.slice()));
Run Code Online (Sandbox Code Playgroud)

但是,如果对象不是可字符串化的(循环对象,非常深的对象,在读取时抛出异常的属性等),这将不起作用.在这种情况下,您需要一个特定的克隆,比如我自己的JSON.prune.log.

在这种情况下,日志记录的替代方案也是调试.设置断点并在代码停止时查看对象.