shift() - 원본 배열도 변경됨
var arr = [1, 2, 3, 4, 5];// (arr)원본 객체 메모리주소를 참조하기 때문에 복사한 객체를 수정하면 원본 객체도 함께 수정된다.var arrCopy = arr;arrCopy.shift(); // test 첫번째 원소 삭제console.log(arr); // [2, 3, 4, 5]console.log(arrCopy); // [2, 3, 4, 5]
slice() - 원본 배열 유지
var arr = [1, 2, 3, 4, 5];// 얕은 복사(shallow copy)// 복사하는 객체를 수정해도 원본 객체(arr)는 유지된다.var arrCopy = arr;arrCopy = arrCopy.slice(0);// 깊은 복사(deep copy)// 또는 arrCopy = JSON.parse(JSON.stringify(arr)); // arr객체를 문자열로 변환후 다시 객체로 파싱하여 새로운 객체 저장 (원소가 객체일경우 참조값이 사라지는 단점)arrCopy.shift(); // test 첫번째 원소 삭제console.log(arr); // [1, 2, 3, 4, 5]console.log(arrCopy); // [2, 3, 4, 5]
반응형
'JavaScript' 카테고리의 다른 글
[JavaScript] 클로저 활용 - 콜백함수 함수에 인자넣기 (0) | 2017.10.22 |
---|---|
[JavaScript] 자바스크립트에서 css 미디어쿼리 이벤트 체크 (0) | 2017.06.30 |
[JavaScript] 해당월의 마지막날짜 얻기 (0) | 2017.03.14 |
[JavaScript] array.splice - 배열 중간에 원소 추가, 삭제 (1) | 2017.03.08 |
[JavaScript] 매개변수가 있지만 없어도 동작하도록 해라 (0) | 2017.03.06 |