javascript
객체 복사 참조하지 않게 하기
hjcode
2020. 7. 23. 19:38
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 = '아이린'
위와 같이 하면 기존 배열을 참조하지 않는다.
반응형