2013-07-09 7 views
-1

2 개의 배열, answeredArrcorrectArr을 만들었습니다. 게임에 대한 정보를 보유하고 있습니다. 게임이 완료 될 때 처음으로 내가 답변 배열에 정답 배열을 복사array.push 잘못된 배열에 추가하는 중

answeredArr = correctArr; 

을이 시점 이후, 나는 answeredArr.push(variable);, correctArr뿐만 아니라 업데이트 될 때마다.

코드가 너무 많아서 게시하지 않으려 고합니다.

답변

4

배열개체입니다. objB = objA을 수행 할 때 objAobjB은 메모리의 같은 위치를 가리 킵니다. 즉 다른 이름으로 같은 것을 가리 킵니다.

다행히도 배열에는 쉽게 복제 할 수있는 방법 Array.prototype.slice이 있습니다.

answeredArr = correctArr; 

당신이 correctArr에에 refrence와 동일하게 answeredArr에 대한 참조를 설정 : 자바 스크립트에서

var a1 = [], a2; 
a2 = a1;   // a1 === a2 
a2 = a1.slice(); // a1 !== a2, but identical. 
0

배열은이 작업을 수행 할 때, 참조가 아닌 값으로 처리됩니다. 이후에 동일한 배열을 가리키고 있기 때문에 하나에 대한 연산도 다른 연산에 영향을 미칩니다.

참조를 복사하는 대신 배열을 복제해야합니다. 이렇게하는 쉬운 방법은 다음과 같습니다.

var answeredArr = correctArr.slice(0); 
관련 문제