我不知道我的数组有什么问题。我想检查数组中的元素,x和y等于pos.x和pos.y.如果不是我想推它。 我的代码:
checkSteps(pos) {
for(let i = 0; i < this.path.steps.length; i++){
if(this.path.steps[i].x == pos.x && this.path.steps[i].y == pos.y) return false;
}
this.path.steps.push({
x: pos.x,
y: pos.y,
});
console.log(this.path);
return true;
}
我不知道为什么我不能this.path.steps.push(pos);
代替this.path.steps.push({x: pos.x,y: pos.y,});
这console.log()
给我:
答案 0 :(得分:0)
当您记录数组或对象(或任何不是原始的对象)时,控制台会在日志发生时显示对象/数组的行(片段),并缓存对该对象的引用/阵列。
稍后展开对象/数组时,控制台将使用先前缓存的引用列出对象/数组内容。对象/数组可能在您展开时已经更改,这就是控制台为您提供此消息的原因:
通知您列出的值刚被(重新)评估过。
<强>演示:强>
打开你的控制台并输入:
var arr = [];
console.log(arr);
setTimeout(function() {
arr.push(0, 1, 2, 3, 4, 5);
console.log("Unfold the above array now");
}, 5000);
等待"Unfold the above array now"
消息然后展开先前记录的空数组并查看。