Вложение изменяемого массива в пустой массив с помощью push()

Прошу пояснить следующее поведение:

let newArray = [];
let arr1 = [0, 0];

newArray.push(arr1);
arr1.push(0);
newArray.push(arr1);
console.log(newArray); // ожидается [[0, 0], [0, 0, 0]], в консоли получаю [[0, 0, 0], [0, 0, 0]]

Ответы (1 шт):

Автор решения: Igor

Вы добавляете в newArray два раза одну и ту же ссылку на arr1, поэтому видите там два одинаковыx массива.

let newArray = [];
let arr1 = [0, 0];

newArray.push([...arr1]);
arr1.push(0);
newArray.push([...arr1]);

console.log(newArray);

→ Ссылка