Я не знаю, что не так с моим массивом. Я хочу проверить элемент в массиве с 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()
дает мне:
Когда вы регистрируете массив или объект (или все, что не является примитивным), консоль показывает строку (фрагмент) объекта/массива в момент возникновения журнала и кэширует ссылку на этот объект/массив.
Когда вы разворачиваете объект/массив позже, консоль использует эту ранее кэшированную ссылку для отображения содержимого объекта/массива. Объект/массив, возможно, был изменен к тому моменту, когда вы его разворачиваете, поэтому консоль дает вам это сообщение:
Чтобы сообщить вам, что перечисленные значения только что были (повторно) оценены.
Демонстрация:
Откройте консоль и введите следующее:
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"
а затем разворачивайте ранее зарегистрированный пустой массив и посмотрите.
this.path.steps
, возможно, стоит добавить код для него.