Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- NPM
- 리액트쿼리
- 자바스크립트 문제
- 자바스크립트 알고리즘
- JS
- 프로그래머스
- leetcode문제풀이
- 타입스크립트
- Baekjoon
- 자바스크립트 문제풀이
- Next
- 자바스크립트코딩테스트
- HTML
- leetcode
- 알고리즘문제풀이
- 자바스크립트
- 자바스크립트 연결리스트
- 제로베이스
- 자바스크립트 알고리즘 문제
- lodash
- 리액트
- Next.js13
- react
- next13
- JavaScript
- 프론트엔드
- til
- stack문제
- CSS
- 자바스크립트 문제 풀이
Archives
- Today
- Total
코드노트
js 데이터 알아보기 / 얕은복사(Sallow copy), 깊은복사(Deep copy) 본문
얕은복사(Sallow copy)
const user = {
name: 'kjun',
age: '93',
emails: ['kjun_all@naver.com']
}
const copyUser = user;
console.log(copyUser === user); // true
// 복사한 데이터가 같이 변형이 된다.
const copyUser = Object.assign({}, user);
console.log(copyUser === user); // false
// 대상객체에다가 출처객체의 속성들을 통해서 얕은복사가 가능하다.
// 새로운 데이터로 사용할 수 있다.
const copyUser = {...user};
console.log(copyUser === user); // false
// ... 전개연산자로도 얕은 복사가 가능하다.
// 새로운 데이터로 사용할 수 있다.
- 또 다른 참조데이터가 없다면 얕은복사로 가능.
- 의도치않게 원본데이터가 같이 수정될 수 있음.
깊은복사(Deep copy)
const copyUser = _.cloneDeep(user);
console.log(copyUser === user); // false
user. emails.push('codenote@gmail.com');
console.log(user.emails === copyUser.emails);
// user – {name: "kjun", age: 22, emails: ["kjun_all@naver.com", "codenote@gmail.com"]}
console.log('user', user);
// copyUser – {name: "kjun", age: "93", emails: ["kjun_all@naver.com"]}
console.log('copyUser', copyUser); // false
- lodash.cloneDeep 기능으로 쉽게 사용할 수 있다.
- 또 다른 참조데이터가 있으면 깊은복사를 사용.
'Code note > 자바스크립트' 카테고리의 다른 글
lodash _ uniqBy, unionBy 알아보기 (0) | 2022.06.08 |
---|---|
javascript 가져오기, 내보내기 (0) | 2022.06.08 |
js 데이터 알아보기 / 전개 연산자 (0) | 2022.06.01 |
js 데이터 알아보기 / 구조 분해 할당 (0) | 2022.05.31 |
js 데이터 알아보기 / array 배열 메서드 / length, concat, forEach, map, filter, find, findInd (0) | 2022.05.30 |