본문 바로가기
javascript

객체 복사 참조하지 않게 하기

by hjcode 2020. 7. 23.
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