2013-03-15 4 views
0

Когда переменные, сделанные из массивов, действуют как указатели на массив и когда они действуют как копии массива?Работа с копиями массивов в javascript

Например, если у меня есть массив с именем Array1

a1=Array1;  

является a1 копию или указатель на массив.

Если я изменю a1, он также изменит Array1. По модификации я имею в виду изменение значения, толкать что-то в массив, сортировать или каким-либо другим способом изменять массив.

спасибо,

+1

'x = [1,2,3]; y = x; y [0] = 7; console.log (x) 'будет выводить' 7,2,3'. массивы в JS являются объектами, а когда вы копируете объект через 'newobj = origobj', вы просто создаете ссылку. вам необходимо CLONE объект массива для создания действительно независимой копии. –

ответ

1

Переменная в javascript содержит ссылку на массив.

Если вы скопируете значение переменной с помощью arr2 = arr1, вы скопируете ссылку на тот же массив. Таким образом, любое изменение к arr2 является заменой на arr1.

Если вы хотите другую переменную для ссылки на копии, так что вы можете изменить второй массив, не изменяя первый, использовать slice:

var arr2 = arr1.slice(); 
+0

Я не помню, почему именно, но я думаю, что вы хотите, чтобы это было 'arr1.slice (0)' – rodneyrehm

+0

Вы также можете заметить, что '.slice()' создает только * мелкую копию массива. – rodneyrehm