WEB/JS|Node.js

JavaScript Operator - Spread & Rest

iamohsung 2022. 8. 31. 08:59
반응형

최신의 JavaScript에서는 ... 으로 표현하는 Spread와 Rest 연산자를 사용할 수 있습니다. 

 

Spread Operator

Spread Operator는 배열에서 elements를 가져오거나 객체에서 속성을 가져올 수 있습니다.

 

배열에 사용한 예시:

const sourceArray = [1, 2, 3];

const newArray = [sourceArray, 4, 5];
console.log(newArray);

const spreadArray = [...sourceArray, 4, 5];
console.log(spreadArray);

newArray에서 spread 연산자를 사용하지 않고 바로 넣을시 [[1, 2, 3], 4, 5]와 같이 2차원 형태로 들어갑니다.

spreadArray에서 처럼 spread연산자를 사용하여 넣을시엔 elements를 펼쳐서 [1, 2, 3, 4, 5]와 같은 형태로 들어갑니다.

 

 

객체에 사용한 예시:

const car = {
  color: 'Red',
  wheels: 4
};

const sportsCar = {
  ...car,
  turbo: true
};

// car 객체의 속성들을 가져와서 sportsCar에 포함
console.log(sportsCar);

새로 만든 객체에 sprad연산자를 사용하여 다른 객체를 포함시킬시엔 아래와 같이 객체의 속성으로 들어갑니다.

[object Object] {
    color: "Red",
    turbo: true,
    wheels: 4
}

 

 

Rest Operator

Rest Operator는 배열, 객체, 함수의 파라미터에서 사용 가능합니다.

 

배열에 사용한 예시:

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

const [newArray, ...restArray] = sourceArray;

console.log(newArray);	// 1
console.log(restArray);	// [2, 3, 4, 5]

배열에 rest연산자를 사용시 따로 선언한 변수 외의 나머지 값들을 따로 배열로 만들어 냅니다.

 

 

객체에 사용한 예시:

const sourceObject = {
  name: 'Hello',
  color: 'blue',
  age: 20
}

const { name, ...secondObject } = sourceObject;
console.log(name);			// Hello
console.log(secondObject);
// [object Object] {
// 	    color: "blue"
//		age: 20
// }

객체에 rest연산자를 사용시 따로 선언한 속성만 제외한 나머지 속성들로 이뤄진 객체를 만들어 냅니다.

 

 

함수의 파라미터에 사용한 예시:

function sumFunc(...rest) {
    return rest.reduce((acc, curr) => acc + curr, 0);
}

console.log(sumFunc(1, 2, 3));			// 6
console.log(sumFunc(1, 2, 3, 4, 5));	// 15

함수에 들어오는 파라미터가 몇개인지 정할 수 없는 경우에 유용하게 사용할 수 있습니다.

반응형