我有一个充满对象的数组。它总共包含23个项目,但是当我对它执行.length时,它返回20。
// Get the new routes
var array = PostStore.getPostList();
console.log(array.objects);
console.log(array.objects.length);
我的控制台返回的图像:
这里出了什么问题?
答案 0 :(得分:6)
问题可能是数组在记录时间和在控制台中打开它的时间之间发生了变化。
要在记录时获取数组,请克隆它:
console.log(array.objects.slice());
console.log(array.objects.length);
请注意,这不会防止数组元素属性发生变化。如果你想要冻结它们,你需要深度克隆,这通常是
console.log(JSON.parse(JSON.stringify(array.objects.slice()));
如果对象不是可字符串的,那么这将不起作用(循环对象,非常深的对象,在读取时抛出异常的属性等)。在这种情况下,您需要一个特定的克隆,例如我自己的JSON.prune.log。
在这种情况下,日志记录的替代方案也是调试。设置断点并在代码停止时查看对象。