2013-04-24 2 views
0

Я пытаюсь установить массив на что-то, а затем установить значение второго массива на значение этого первого массива. Когда я устанавливаю переменную второго массива равным первому массиву переменных, второй массив, похоже, просто становится клоном первого массива и точно имитирует его. Это не то, что я хочу - я просто хочу, чтобы второй массив был установлен равным текущему значению первого массива. Я предполагаю, что это основная проблема, но я не знаю, как лучше ее решить.Массив, «привязанный» к другому массиву?

Демо: http://jsfiddle.net/7rLvQ/

a = [-1, -1, -1]; 
b = []; 
while (a[2] < 10) { 
    console.log(b + ", " + a); 
    a[2]++; 

    b = a; 
} 

ответ

5

второй массив, кажется, только стать клоном первого массива и имитировать его точно

No. Дело не в том, что не существует второй массив. У вас есть две переменные, указывающие на один и тот же массив.

Я просто хочу, чтобы второй массив, который будет установлен равным текущему значению первого массива

Чтобы сделать это, вам нужно создать новый массив и скопировать все значения элемента. Самый быстрый способ использует slice:

b = a.slice(0); 
1

Это потому, что переменные являются ссылки на массивы, а не массив сами. Попробуй это.

b = a.slice(); 
Смежные вопросы