2차 세미나 시간에 구조분해할당 퀴즈를 다 틀려서 rest와 spread를 복습하고 정리해보려고 한다.
배열이나 객체의 속성을 분해해서 그 값을 개별적인 변수에 따로 담을 수 있게 하는 표현식
const foodList = ['apple','orange','mango'];
let [a,b,c] = foodList;
console.log(a); //apple
console.log(b); //orange
console.log(c); //mango
const group = ["씨엘", "박봄", "산다라박", "공민지"];
const [leader, ...members] = group;
const obj = {
name:'이서영',
age:23,
favorite:{
food:['치킨','라면','김밥'],
music:'kpop',
color:'#000000',
}
}
const {name,...rest} = obj;
const {
favorite: { color: favoriteColor, ...restData },
} = obj;
배열, 문자열, 객체 등 Iterable한 객체를 개별적인 요소로 분리할 수 있다.
const newObj = {
...obj,
job:'학생',
study:'Web',
}
console.log(newObj);
/* 출력결과
{
name: "이서영",
age: 23,
favorite: {
food: ["치킨", "라면", "김밥"],
music: "kpop",
color: "#000000",
},
job: "학생",
study: "Web",
}
*/
다음과 같은 객체가 있다고 가정하자.
const obj = {
name: "이서영",
age: 23,
favorite: {
food: ["치킨", "라면", "김밥"],
music: "kpop",
color: "#000000",
}
}
{
food:["치킨", "라면", "김밥"],
music: "kpop",
color: "#000000",
coffee:'아.아'
}
🔺위와 같은 형태의 newObj
객체를 만드는 방법은 다음과 같다.
const newObj = {
...obj.favorite,
coffee:'아.아',
}
const 과일 = ["망고", "수박", "킹스베리"];
const 채소 = ["오이", "양배추", "파프리카"];
const 싱싱한음식 = [...과일, ...채소];
🔺위와 같이 rest를 사용하여 배열을 하나로 합칠 수 있다.
rest는 묶는 것이고 spread는 펼치는 것이다.
(뇌피셜)
세미나 들으면서 rest랑 spread가 헷갈렸는데 너무 유용한 글이네요! 잘 보고 갑니다~