js почему массив авто сортируется

нужен такой вложенный массив

[[1, 2, 3, 4, 5, 6, 7, 8, 9],
[2, 3, 4, 5, 6, 7, 8, 9, 1],
[3, 4, 5, 6, 7, 8, 9, 1, 2],
[4, 5, 6, 7, 8, 9, 1, 2, 3],
[5, 6, 7, 8, 9, 1, 2, 3, 4],
[6, 7, 8, 9, 1, 2, 3, 4, 5],
[7, 8, 9, 1, 2, 3, 4, 5, 6],
[8, 9, 1, 2, 3, 4, 5, 6, 7],
[9, 1, 2, 3, 4, 5, 6, 7, 8]]

let arr=[];
var a=[1,2,3,4,5,6,7,8,9];
arr[0]=a;
for (let i = 1; i < 9; i++) {
    a.push(a.shift());
    arr[i]=a;
    console.log(arr[i]) //1
}

console.log(arr); //2

в первом выводе получается правильно, а во втором так:

[1, 2, 3, 4, 5, 6, 7, 8, 9],
[1, 2, 3, 4, 5, 6, 7, 8, 9],
[1, 2, 3, 4, 5, 6, 7, 8, 9],
[1, 2, 3, 4, 5, 6, 7, 8, 9],
[1, 2, 3, 4, 5, 6, 7, 8, 9],
[1, 2, 3, 4, 5, 6, 7, 8, 9],
[1, 2, 3, 4, 5, 6, 7, 8, 9],
[1, 2, 3, 4, 5, 6, 7, 8, 9],
[1, 2, 3, 4, 5, 6, 7, 8, 9]

почему? есть автосортировка массива?


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

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

У вас создается один массив из 10 элементов. На каждой итерации цикла вы переставляете в нем первый элемент в конец и вставляете ссылку на этот массив в arr. Соответственно в итоге вы получаете arr содержащий 10 ссылок на один и тот же массив.

→ Ссылка