2013-04-17 4 views
0

скажем, у меня есть два JavaScript массивов, как это:Javascript: ссылки массива с переменным, вместо того, чтобы дублировать его

arrA = [1,2,3] 
arrB = [4,5,6] 

Есть ли способ, я могу сослаться на них с различными именами переменных вниз, то дорога? Если бы я это сделать:

arrC = arrA 
arrD = arrB 

это делает копии исходных массивов, вместо того, чтобы указатель/ссылку на них. Итак, если я стою со значением arrC, arrA не обновляется. Есть ли способ обойти это?

Спасибо.

+1

Вам необходимо предоставить образец кода, показывающий ваш сценарий, так как 'ARRC = arrA' делает просто сделать новую ссылку на тот же массив. –

+0

Я использовал ниже код в firebug: 'arrA = [1, 2, 3]; arrC = arrA; arrC [2] = 9; console.log (ARRA). Он показывает, что arrA обновляется. –

+0

Да, похоже, что я переписывал мое имя переменной в другом месте моего кода. Спасибо за помощь. Я приму ответ, как только это позволит. –

ответ

5

Нет, это не делает копию. Если вы измените arrC, он также изменит arrA.

Попробуйте это:

var arrA = [1,2,3]; 
var arrC = arrA; 
arrC.push(26); 
console.log(arrA); 

Вы увидите [1, 2, 3, 26] в консоли.

Противоположное верно: если вы хотите сделать копию, вы должны сделать это в явном виде, например, с

var arrC = arrA.slice(); 
+0

, и если вы ** сделали ** хотите сделать копию, используйте 'var copy = arr.splice();' – jbabey

+0

@jbabey ваш немного поздно и немного неправильно :) –

+0

Что вы имеете в виду? это то же самое, что вы только что отредактировали свой ответ, чтобы включить :) – jbabey

0

Выполните эту запись и создать массив в пределах объекта, это простой способ.

javascript variable reference/alias

+1

1) Не просто ссылку на другой вопрос, сделайте это в комментарии, чтобы кто-то мог отметить его как дубликат. 2) Я не вижу, как это связано. 3) попытайтесь получить некоторую репутацию, чтобы вы могли комментировать, а не писать ответы, которые не отвечают. 4) добро пожаловать на SO :) –

+0

Хорошо, спасибо. :) – laxy