Здравствуйте! Изучаю 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]. Я не могу понять в чём проблема. Буду рад, если кто-нибудь сможет объяснить что происходит.