Language/React

[React] spread operator & deep copy

jaewpark 2021. 10. 15. 16:28

spread operator(펼침 연산자)

es6에 추가된 연산자로 마침표 세 개(...)로 사용되며, 크게 두 가지로 쓰이게 된다.

  • 배열에서의 역할
    • 배열 병합
    • var arr3 = [...arr1, ...arr2] 와 같이 사용도 가능하며, 다양한 형태로 간단히 사용 가능
    •  
    • 배열 복사
    • shallow copy(얕은 복사) 로 되어 있으나, 깊은 복사는 1레벨 까지 허용
    • 위와 같이 2레벨은 깊은 복사가 되지 않기에 '얕은 복사'라고 나와있다
    •  
  • 함수에서의 역할
    • 함수의 매개변수를 spread operator로 작성하는 형태를 Rest parameter
    • printf 와 같은 가변인자 받는 형식으로 이해하면 편하다
    • 위와 같은 코드로 사용이 가능
    •  

다른 역할로는 나머지의 개념으로 배열 안에서 나머지를 부른다 생각하면 된다.

var rest, a, b;
[a, b] = ['banana', 'strawberry'];
[a, b, ...rest] = ['banana', 'strawberry', 'apple', 'kiwi'];
console.log(rest); //['apple', 'kiwi']

shallow copy

 

Array.filter() 메서드

 

Object.assign() 메서드

 

Deep copy

 

커스텀 재귀함수

  • 직접 깊은 복사를 실현하는 함수 작성

 

JSON.stringify & JSON.parse

  • JSON.stringify: JS 오브젝트를 스트링 포멧으로 변환
  • JSON.parse: 스트링 포멧을 JS 오브젝트로 변환
  •