본문 바로가기
Node.js

Spread syntax(...)

by 오늘만 사는 여자 2021. 9. 5.
728x90
반응형

* ES2015에서 새로 추가된 syntax이다.

* 병합, 구조 분배 할당 등에 다양하게 활용할 수 있다.

 

* Spread operator - object merge(1)

const pd = {
	nickname: 'DY',
    email: 'hello@naver.com'
}

const pbd = {
	age: 28
}

const user = {
	...pd,
    ...pbd
}

각 오브젝트를 합쳐 만들고 싶을 때 

user 오브젝트에 각각 오브젝트를 합친다

흩뿌려 user안에 들어간다 생각하면 이해가 쉽다

 

* Spread operator - object merge(2)

const override = {
	email: 'dy@naver.com',
    pwd: '1234'
}

const config = {
	email: 'default@naver.com',
    pwd: '0000',
   	number: '1234',
    ...override,
}

config에 ...override를 추가 시 email, pwd 명이 같은 부분들이 override되어 email, pwd값이 상단 override의 값으로 변경된다. 무조건 제일 하단에 넣어줘야한다. 안그럼 에러 발생

# 순서가 제일 중요

 

* Spread operator - object rest

const user = {
	nickname: 'dy',
    age: 28,
    email: 'dy@naver.com',
}

const {nickname, ...personalData } = user
console.log(personalData)// {age: 28, email: 'dy@naver.com'}

personalData에 nickname을 제거한 후 가져온다.

 

* Spread operator - array merge

const pets = ['dog', 'cat']
const predators = ['wolf', 'cougar']
const animals = [...pets, ...predators]

console.log(animals) //['dog', 'cat', 'wolf', 'cougar']

배열을 합치고 싶을 때 저렇게 선언하면 pets, 순서대로 각각 animals에 합쳐진다.

 

* Spread operator - array rest

const [head, ...rest] = [1, 2, 3]
console.log(head) //1
console.log(rest) //2, 3

제일 첫 번째 head는 1로 나오고 나머지 rest로 호출하면 head 외 나머지 값이 나온다.

 

* 예제 소스

const a = [1, 2, 3, 4, 5]

const [head, ...rest] = a
//console.log(head, rest)

const shoudOverride = true
const personalData = {
  email: 'dy@naver.com',
  pwd: '1234',
}

const override = {
  email: 'heello@naver.com',
}
const publicData = {
  nickname: 'dy',
}

const user = {
  ...personalData,
  ...publicData,
  ...(shoudOverride
    ? {
        email: 'ddddyy@naver.com',
      }
    : null),
}

console.log(user)

//function 형
function foo(head, ...rest) {
  console.log(head)
  console.log(rest)
}
foo(1, 2, 3, 4)

 

728x90
반응형

'Node.js' 카테고리의 다른 글

Transpile  (0) 2021.09.06
Polyfill  (0) 2021.09.06
async _ await  (0) 2021.09.06
Promise  (0) 2021.09.06
JavaScript 문제 풀기  (0) 2021.09.05

댓글