Показать сообщение отдельно
  #1 (permalink)  
Старый 05.07.2016, 03:26
Новичок на форуме
Отправить личное сообщение для ilya111 Посмотреть профиль Найти все сообщения от ilya111
 
Регистрация: 05.07.2016
Сообщений: 5

Ошибка при переборе массива объектов
Ребята, уже голову сломал. в функции moveDown() перебираю массив объектов, чтобы найти объект, где его свойство value не равно 0. Хочу изменить свойство value следующего объекта. Однако браузер ругается - Cannot read property 'число' of undefined. При чем в console.log он видит этот объект. Пометил в коде где конкретно стопорнулся.



var foo = [];
function Dog(x, y) {
this.value = 0;
this.x = x;
this.y = y;
}

for (i = 0; i < 4; i++) {
foo[i] = [];
for (j = 0; j < 4; j++) {
foo[i][j] = new Dog(i, j);
}
}

function remdom(){
var first = Math.floor(Math.random() * 4),
second = Math.floor(Math.random() * 4);
foo[first][second].value = 2 * (Math.floor(Math.random() * 2) + 1);

}
remdom();
document.onkeydown = function (event) {
if (event.keyCode == 40 || event.keyCode == 83) moveDown();
}
function moveDown(){
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
if(foo[i][j].value){
foo[i][j].value = 4;
foo[i+1][j].value = 8; // Не присваивается значение свойства объекта пишет Cannot read property 'число' of undefined

}


}
}
}
Ответить с цитированием