var names = [
{"name": "사나"},
{"name": "슬기"},
{"name": "다현"}
];
var names2 = names;
names2[0].name = '아이린'
위의 코드를 실행하면 names 와 names2의 0번째 값이 동일하게 변경이 된다.
객체를 = 로 복사할 때 값 자체를 복사하는게 아니라 메모리 주소 참조를 복사하기 때문이다.
해결방법은 JSON.stringify로 배열을 string화 한뒤에 다시 JSON.parse로 배열로 바꿔준다.
var names = [
{"name": "사나"},
{"name": "슬기"},
{"name": "다현"}
];
var names2 = JSON.parse(JSON.stringify(names));
names2[0].name = '아이린'
위와 같이 하면 기존 배열을 참조하지 않는다.
반응형
'javascript' 카테고리의 다른 글
배열에서 원하는 객체 찾기 (0) | 2020.09.10 |
---|---|
Array의 메서드 some, every (0) | 2020.08.24 |
파일명 자르기 (0) | 2020.07.13 |
타입스크립트 기본 타입 (0) | 2020.06.09 |
배열 유사배열 (0) | 2020.06.03 |