객체/배열 복사
객체 복사하기
let profile = {
name : "철수",
age : 8,
school : "다람쥐초등학교"
}
let profile = {
name : "철수",
age : 8,
school : "다람쥐초등학교"
}
라는 객체를 let profile2 = profile로 복사했을때
복사본의 데이터를 수정하면, 원본 데이터도 수정되는 현상이 발생한다. 데이터뿐만아니라 주소까지 복사되기 때문이다.
이것을 복사 비슷하게 하기 위해서는
스프레드 연산자
이부분을
...profile
로 쓰는 것
그런데,
중첩객체에 있는 hobby1을 수정했는데도
원본도 바뀌었다.
중첩객체 안에 있는 주소를 가지고왔기 때문이다. 이것을 얕은 복사(Shllow-Copy)라고 한다.
객체를 문자열로 바꾼후 복사하고, 다시 객체로 바꾸면?
JSON.parse을 이용하면, 객체를 문자열로 바꿀 수있고,
JSON.stringify를 하면 문자열을 객체로 바꿀 수 있다.
이렇게하면 복사된 새로운 객체를 얻을 수 있다.
이것을 깊은 복사(Deep-Copy)
JSON.stringify는 조금 느린데
이것을 빨리 하게하는 라이브러리가 있다.
npm lodash에 cloneDeep()이다.
import _ from 'lodash'
로 임포트해서 사용 가능.
배열복사
const aaa = ["a", "b", "c"]
const bbb = ["d", "e"]
const ccc = [aaa, bbb]
const aaa = ["a", "b", "c"]
const bbb = ["d", "e"]
const ccc = [aaa, bbb]
ccc의 결과값은 [["a", "b", "c"],["d", "e"]]
이렇게 나온다.
아래처럼 스프레스 연산자를 사용해야
const ccc = [...aaa, ...bbb]
["a", "b", "c","d", "e"] 라는 새로운 배열을 얻을 수 있다.
Author And Source
이 문제에 관하여(객체/배열 복사), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@owlsuri/객체-복사저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)