Spread 문법
(...Iterable)
- Spread 연산자, 전개구문
- 모든 Iterable은 Spread 될 수 있다
- 순회가 가능한 모든 것들은 촤르르르륵 펼쳐 질 수 있다
- Spread 문법을 사용하면 유사 배열 객체(Array-like Object)를 배열로 손쉽게 변환할 수 있다.
func(...iterable)
[...iterable]
{ ...obj }
💡 함수의 인수로 사용하는 경우
- 배열의 요소를 분해하여 순차적으로 파라미터에 할당
- Rest 파라미터는 Spread 문법을 사용하여 파라미터를 정의한것을 의미, 혼동 주의!!!
- Rest 파라미터는 반드시 마지막 파라미터
- Spread문법을 사용한 인수는 자유롭게 사용가능
function foo(param, ...rest) {
console.log(param);
console.log(rest);
}
foo(1, 2, 3);
function bar(x, y, z) {
console.log(x);
console.log(y);
console.log(z);
}
bar(...[1, 2, 3]);
function foo(v, w, x, y, z) {
console.log(v);
console.log(w);
console.log(x);
console.log(y);
console.log(z);
}
foo(1, ...[2, 3], 4, ...[5]);
💡 배열에서 사용하는 경우
concat ( )
- 기존의 배열 요소를 새로운 배열 요소의 일부로 만들기
let arr =[1,2,3];
console.log(arr.concat([4,5,6]));
const newArr = [1,2,3];
console.log([...arr,4,5,6])
push ( )
- 기존 배열에 다른 배열의 개별 요소를 각각 push 한다
const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
arr1.push(...arr2);
console.log(arr1);
splice ( )
- 기존 배열에 다른 배열의 개별 요소를 추가한다.
const arr1 = [1, 2, 3, 6];
const arr2 = [4, 5];
arr1.splice(3, 0, ...arr2);
console.log(arr1);
slice ( )
- 기존 배열을 복사한다
- 이때 원본 배열의 각 요소를 얕은 복사(shallow copy)하여 새로운 복사본을 생성한다. 이는 Array#slice 메소드도 마찬가지다.
var arr = [1, 2, 3];
var copy = arr.slice();
console.log(copy);
copy.push(4);
console.log(copy);
console.log(arr);
const arr = [1, 2, 3];
const copy = [...arr];
console.log(copy);
copy.push(4);
console.log(copy);
console.log(arr);
Rest파라미터,concat(),obj 사용 예제
function sum(first, second, ...nums) {
console.log(nums);
}
sum(1, 2, 0, 1, 2, 4);
const fruits1 = ['🍏', '🥝'];
const fruits2 = ['🍓', '🍌'];
let arr = fruits1.concat(fruits2);
console.log(arr);
arr = [...fruits1, '🍓', ...fruits2];
console.log(arr);
const ellie = { name: 'Ellie', age: 20, home: { address: 'home' } };
const updated = {
...ellie,
job: 's/w engineer',
};
console.log(ellie);
console.log(updated);