Показать сообщение отдельно
  #1 (permalink)  
Старый 18.04.2017, 09:06
Новичок на форуме
Отправить личное сообщение для IsaacMech Посмотреть профиль Найти все сообщения от IsaacMech
 
Регистрация: 18.04.2017
Сообщений: 3

Странное поведение массива с объектом
Здравствуйте! Изучаю JavaScript на Khan Academy и столкнулся с такой проблемой. Я хочу, чтобы массив с объектом увеличивался каждый раз, когда число меньше длины другого массива. Написал такой код:
var drawShelf = function() {
    for (var i = 0; i < diskShelf.length; i++) {
        diskShelf[i].capacity = floor(diskShelf[i].height / (diskShelf[i].space.disk + diskShelf[i].thickness.shelf));
        totalCapacity += diskShelf[i].capacity;
        if (totalCapacity < disk.length) {
            diskShelf.push(diskShelf[i]);
            println(diskShelf[i].x + " | " + diskShelf[i + 1].x + " / " + i);
            diskShelf[i + 1].x += diskShelf[i].width + diskShelf[i].space.shelf;
            println(diskShelf[i].x + " | " + diskShelf[i + 1].x + " / " + i); 
        }
    }
};

Вроде всё правильно, только вот почему-то операция ведёт себя как-то странно.
diskShelf[i + 1].x += diskShelf[i].width + diskShelf[i].space.shelf;

Вместо того, чтобы изменить значение в одном элементе массива diskShelf[i + 1], она меняет значение и в diskShelf[i]. В итоге получается, что diskShelf[i].x = diskShelf[i + 1]. Я не могу понять в чём проблема. Буду рад, если кто-нибудь сможет объяснить что происходит.
Ответить с цитированием