Spread : 상속과 비슷한 느낌
객체나 배열의 내부나 함수를 호출해주는 인자에서 사용
객체나 배열의 요소를 펼쳐보아라
객체 spread
이전 객체의 내용,속성 등을 복사하는 것
예시)
→ 엄청 많은 내용이 있을 경우 코드가 길어지고 일일히 치는데 어려움이 있음
const student = {
name : '김구름',
//내용이 엄청 많이 있다고 가정
//...........
};
//student의 내용을 전부 받아오면서 major라는 값을 추가하고 싶은 경우
//spread를 안쓴 경우
const univStudent = {
name : '김구름',
//student의 인자 모두...........
major : '컴퓨터공학과',
}
//spread를 쓴 경우
const univStudent = {
...student, //이거 받고 //student의 인자 모두...........까지도 받음
major : '컴퓨터공학과', //이거 추가
}
//다중 spread 쓴 경우
const koreanUnivStudent = {
...univStudent, //전의 내용을 전부 받아오고
region : 'seoul', //이거 추가
}
배열 spread
이전 배열의 내용과 속성 등을 복사하는 것
예시)
→ 엄청 많은 내용이 있을 경우 코드가 길어지고 일일히 치는데 어려움이 있음
const oddNumbers = [1,3,5,7,9];
const evenNumbers = [2,4,6,8,10];
//배열 합치기
const allNumbers = [...oddNumbers,...evenNumbers];
console.log(allNumbers);
//한번에 값 집어 넣기
function sum(num1,num2,num3,num4,num5,num6,num7,num8,num9,num10){
return num1+num2+num3+num4+num5+num6+num7+num8+num9+num10;
}
const result = sum(...allNumbers);
console.log(result);
console.log(...allNumbers); // 1 3 5 7 9 2 4 6 8 10
console.log(allNumbers);
//[
// 1, 3, 5, 7, 9,
// 2, 4, 6, 8, 10
//]
rest
(구조분해할당으로 값을 받아오는) 객체나 배열을 받아오는 변수나 (값을 받아오는) 함수 파라미터에서 주로 쓰임
요소를 펼쳐서 배열로 받아오는 방식
구조분해할당으로 값을 받아오는 객체
const {객체키값1,객체키값2,객체키값3} = 객체이름 //앞에 것이 객체
배열을 받아오는 변수
const arrayVar = [배열값1,배열값2 ...]; //이때 앞의 것이 배열을 받아오는 변수
값을 받아오는 함수 파라미터
function(파라미터1,파리미터2,....){ //이때 인자값 즉 파라미터
}
굳이 rest라는 이름을 사용 안해도 되고 다른 이름을 사용해도 됩니다.
function sum(...rest){
console.log(rest);
}
function sum(...restName){
console.log(restName);
}
function sum(...rest){
console.log(rest[0]);
}
spread와 rest의 차이점
spread : 펼쳐서 전해주는 방식rest : 펼쳐서 배열에 저장하여 전해주는 방식 → 부분집합을 만드는 데에 사용된다.몇개를 제외한 새로운 객체를 만드는 방법(부분집합느낌의 객체 생성)
const koreanUnivStudent = {
name : '김구름',
major : '컴공',
region : '서울',
};
//const {name,major,region} = koreanUnivStudent;
//name을 뺀 부분집합 객체를 만들고 싶다.
const {name,...rest} = koreanUnivStudent;
//나는 구조분해할당을 할건데 name을 뺀 나머지로 부분집합을 만들거야
console.log(rest);