Новый массив влияет на старый массив, даже если я скопировал его и не использовал тот же рефренс
Эй , ребята, у вас есть этот странный жучок,
Я создал новый массив из существующего массива,
однако когда я обновляю объекты в указанном скопированном массиве,
объекты в исходном массиве также обновляются,
ссылка не должна быть такой же поэтому я понятия не имею почему это происходит
массив currentShape-это массив, содержащий в общей сложности 4 объекта
код:
function checkKey(e) { nextShape = [...currentShape]; e.preventDefault(); e = e || window.event; if (e.keyCode === 40) { direction = "down"; nextShape.forEach(cell => cell.i++);
drawShape(); }
drawShape не имеет значения, так как он уже получает модифицированный массив, который не является тем, что он должен получить,
Что я уже пробовал:
попробовал использовать slice,map для создания нового массива, тот же эффект
Gerry Schmitz
"Копирование" - это не то же самое, что "клонирование". При копировании создаются ссылки на существующие объекты. Клонирование создает новые объекты с их собственными ссылками.
Richard Deeming
Вы отметили этот вопрос как "Java", но ваш код, похоже, является "Javascript".
Несмотря на схожие названия, это два совершенно разных языка.