기본 콘텐츠로 건너뛰기

[Javascript ES6] Spread(...) 연산자 활용법

Spread 연산자는 ES6에서 도입되었다. 
Spread는 ...을 변수 앞에 붙여서 사용하는데, 배열이나 문자열같이 반복 가능한 내용들을 각각의 요소(element)로 풀어 헤쳐준다. 

예시를 통해 살펴보자.
 
1
2
const positive = [1, 2, 3, 4];
console.log(positive);

아래와 같이 평범하게 array가 출력된다.

이번에는 positive 변수명 앞에 ...을 붙여서 spread를 사용해서 출력해본다.
 
1
console.log(...positive);

이번에는 array가 그대로 출력되지 않고, 각 요소(element)로 풀어 헤쳐져 출력된다.


그럼 Spread 연산자는 어떻게 활용할 수 있을까?
배열들을 합치는데 사용하면 편리하다.
 
const positive = [1, 2, 3, 4];
const negative = [-1, -2, -3, -4];

const number = [...negative, ...positive];

console.log(number);
 
위와 같이 2개의 array를 Spread 연산자를 이용해 간단하게 합칠 수 있다. 결과는 아래와 같다.


만약 Spread 연산자를 쓰지 않고 바로 합치게 되면 아래와 같이
array 속에 각각의 array가 존재하는 방식으로 합쳐지게 된다.


Spread 연산자는 Array 뿐만 아니라, Object를 합치는 데에도 활용할 수 있다.

const name = {"firstName": "Namu", "lastName": "Kim"};
const bio = {"height": 170, "age": 30};

const userInfo = {...name, ...bio};

console.log(userInfo);

위와 같이 2개의 object를 Spread를 이용해서 합치게 되면 아래와 같다.


object를 합칠 때에도 spread를 이용하지 않으면 각각의 object가 element로 들어가게 된다.



object에서의 다른 활용 법을 알아보자.

spread를 이용하면 object 변수의 선언을 깔끔하게 할 수 있다.
value가 있을 경우 key를 추가하고, value가 없을 경우에는 key를 추가하지 않도록 할 수 있다.

let price = "";

let product = {
  name: "apple",
  ...(price !== "" && {price})
};

console.log(product);

위 코드를 실행시키면 결과는 아래와 같다. 


price !== "" 가 false이기 때문에 false를 반환하고, object에는 값이 추가되지 않는다.

그럼 price의 값이 있으면 어떻게 될까?

price = 1000;

let product = {
  name: "apple",
  ...(price !== "" && {price})
};

console.log(product);

위 코드를 실행시면 결과는 아래와 같다.


price !== "" 가 true이기 때문에 {price}를 반환하고 spread가 {price}의 element를 풀어 헤쳐서 추가해준다.

끝.

댓글

이 블로그의 인기 게시물

파이썬(Python)을 이용한 산점도(scatter) 그리기

파이썬의 Matplotlib를 이용해 데이터의 산점도(scatter plot)를 그릴 수 있다. 예시를 통해 살펴보자. 먼저 아래와 같이 데이터 프레임 예시를 만든다. 1 2 3 4 5 6 7 8 9 10 import pandas as pd height = [ 170 , 168 , 177 , 181 , 172 , 171 , 169 , 175 , 174 , 178 , 170 , 167 , 177 , 182 , 173 , 171 , 170 , 179 , 175 , 177 , 186 , 166 , 183 , 168 ] weight = [ 70 , 66 , 73 , 77 , 74 , 73 , 69 , 79 , 77 , 80 , 74 , 68 , 71 , 76 , 78 , 72 , 68 , 79 , 77 , 81 , 84 , 73 , 78 , 69 ] # DataFrame 만들기 body = pd . DataFrame( { 'height' : height, 'weight' : weight} ) body라는 이름의 데이터 프레임(테이블)이 만들어졌다. 이제, body 테이블의 데이터들의 분포를 산점도로 그려보자. 산점도를 그리는 코드는 아래와 같다. 1 2 3 4 5 6 7 8 9 10 # 산점도(scatter) 그리기 import matplotlib.pylab as plt plt . scatter( body[ 'weight' ], body[ 'height' ], label = "data" ) plt . legend(loc = "best" ) plt . xlabel( 'weight' ) plt . ylabel( 'height'

웨딩 드레스 스케치 도안

웨딩 드레스샵 투어를 다니면서 샘플로 드레스를 입는 경우에는 드레스 사진을 찍지 못하게 하는 샵이 많다. ​ 그래서 투어를 돌고 나면 어떤 샵의 어떤 스타일이 신부에게 잘 어울렸는지 헷갈릴 수가 있다. ​ 하지만 투어를 다닐 때 드레스샵에서 입은 드레스의 특징과 느낌을 잘 기록하면 샵을 선택하는 데 도움이 될 수 있다. ​ 드레스 투어를 다닐 때 드레스를 기록할 스케치 도안은 아래 링크에서 확인/다운로드 할 수 있다. 웨딩 드레스 스케치 도안 확인/다운로드 하기 투어를 마친 후 드레스샵과 계약을 하고, 드디어 본식 드레스를 고를 때에는 사진을 찍을 수 있는 경우가 많다. ​ 이 땐 사진을 잘 찍어서 어떤 드레스를 입을지 잘 선택하도록 하자. ​ ​

DEMOS Calculator - 웹에서 그래프 그리기

수식의 그래프를 그려보고 싶을 때 편리한 웹 서비스가 있어서 소개한다. DEMOS Calculator(https://www.desmos.com/calculator) DEMOS Calculator는 수식을 입력하면 자동으로 그래프를 그려준다. 아래는 로그함수를 입력한 모습이다. 좌측 영역의 수식 입력창에 수식을 입력하면 실시간으로 그래프를 확인할 수 있다. 좌측 상단의 햄버거 바를 클릭하면 아래와 같이 다양한 예시 그래프들도 확인할 수 있다. 수학식에 따라 그래프를 깔끔하게 그려야 할 때 요긴하게 사용할 수 있는 웹 서비스이다. 끝.