JS 원본 내용 그대로 저장 하기 Deep Copy (배열, 객체)
2021. 8. 20. 19:10ㆍJS
개발을 하다 보면 원본과 사본을 반복적으로 참조해야할때가있다.
이때 보통 나는 이렇게 얕은복사 참조 복사를 했다.
하지만 반복적으로 원본을 사용해야하는 개발에서는 알맞지가 않다. 그러므로 원본이 변경이 되지않는 딥카피를 해야한다.
1. 배열 Array
방법 : slice()를 사용하여 딥카피를 한다.
얕은 복사 :
// 얕은복사
const a = [1, 2, 3]
let b = a
b[3] = 7
console.log(a)
// [ 1, 2, 3, 7 ]
console.log(b)
// [ 1, 2, 3, 7 ]
딥 카피 :
// 딥 카피
const a = [1, 2, 3]
let b = a.slice()
b[3] = 7
console.log(a)
// [ 1, 2, 3 ]
console.log(b)
// [ 1, 2, 3, 7 ]
이렇게 딥카피를 하면 배열의 원본 데이터를 지키며 사본 수정 할 수 있다.
2. 객체 Object
방법 : Object.assign()를 사용하여 딥카피를 한다.
얕은 복사 :
// 얕은 복사
const a = {
name: '짱구',
age: 5
}
const b = a
b.name = '철수'
b.age = 30
console.log(a)
// { name: '철수', age: 30 }
console.log(b)
// { name: '철수', age: 30 }
딥 카피 :
// 딥 카피
const a = {
name: '짱구',
age: 5
}
const b = Object.assign({}, a)
b.name = '철수'
b.age = 30
console.log(a)
// { name: '짱구', age: 5 }
console.log(b)
// { name: '철수', age: 30 }
728x90
반응형
'JS' 카테고리의 다른 글
JavaScript 배열에서 특정 값 빼기 [ splice() 사용 ] (0) | 2021.10.20 |
---|---|
JS 쿠키를 Session처럼 사용하는 방법 (0) | 2021.08.31 |
JS 배열안에 객체 찾는 방법 find() 함수 사용 (0) | 2021.06.09 |
배열안에있는 값 누적 연산 하기 reduce (0) | 2021.02.21 |
JS 6자리 랜덤 문자열 (인증코드) 만들기 (0) | 2021.01.26 |