2013-04-24 2 views
0

배열을 무언가로 설정하려고 시도한 다음 두 번째 배열의 값을 첫 번째 배열의 값으로 설정합니다. 두 번째 배열의 변수를 변수 first 배열과 동일하게 설정하면 두 번째 배열이 첫 번째 배열의 복제본이되어 정확히 모방 한 것처럼 보입니다. 이것은 내가 원하는 것이 아닙니다. 단지 두 번째 배열을 첫 번째 배열의 현재 값과 동일하게 설정하면됩니다. 나는 이것이 기본적인 문제라고 생각하지만, 그것을 해결할 수있는 최선의 방법을 모른다.배열이 다른 배열에 "연결"되어 있습니까?

데모 : http://jsfiddle.net/7rLvQ/

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

    b = a; 
} 

답변

5

번째 배열은 단지 첫 번째 배열의 복제되고,이 포인트가 더가인지하지 그것을 정확히

제를 모방하는 것 더 이상 두 번째 배열. 동일한 배열을 가리키는 변수가 두 개 있습니다.

난 그냥 두 번째 배열

그렇게하려면 첫 번째 배열의 현재의 값과 동일하게 설정하려면, 당신은 모든 항목의 값을 새로운 배열을 생성하고 복사해야합니다. 가장 빠른 방법은 slice을 사용하고 있습니다 : 변수가없는 배열 배열에 대한 참조, 그 자체이기 때문에

b = a.slice(0); 
1

있다고. 이 시도.

b = a.slice(); 
관련 문제