toggle menu

[JavaScript] 레퍼런스 참조없는 배열 복사(Deep Copy)

2012. 11. 26. 17:29 JavaScript
자바스크립트에서 배열을 다른 변수에 할당하면, 당연히 레퍼런스 참조로 복사된다.
종종 다른 작업을 위해서 레퍼런스 참조없는 배열 복사가 필요해질 때가 있는데, 그때에는 아래와 같은 방법을 사용한다.

var aaa = [0, 1, 2, 3, 4, 5];

var bbb = JSON.parse(JSON.stringify( aaa )); //참조없는 복사


그런데 이 방식으로 복사를 할 경우, indexOf 나 contains 같은 메서드로는 객체 검색이 되지 않는다. 이유는 당연히 배열 안의 객체들의 주소값이 다르기 때문일 것이다. 이런 때에는 어쩔 수 없이 slice() 등을 사용해서 shallow copy를 할 수 밖에 없다.
var aaa = [0, 1, 2, 3, 4, 5];

var bbb = aaa.slice(); //indexOf 혹은 contains로 검색 가능


JavaScript 관련 포스팅 더보기