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 = '아이린'

 

위와 같이 하면 기존 배열을 참조하지 않는다.

반응형