07. spread ์ rest
07. spread ์ rest
์ด๋ฒ์๋ ES6 ์์ ๋์ ๋ spread ์ rest ๋ฌธ๋ฒ์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค. ์๋ก ์์ ํ ๋ค๋ฅธ ๋ฌธ๋ฒ์ธ๋ฐ์, ์๊ทผํ ์ข ๋น์ทํฉ๋๋ค.
spread
์ผ๋จ spread ๋ฌธ๋ฒ๋ถํฐ ์์๋ด ์๋ค. spread ๋ผ๋ ๋จ์ด๊ฐ ๊ฐ์ง๊ณ ์๋ ์๋ฏธ๋ ํผ์น๋ค, ํผ๋จ๋ฆฌ๋ค ์ ๋๋ค. ์ด ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ฉด, ๊ฐ์ฒด ํน์ ๋ฐฐ์ด์ ์์ฝ๊ฒ ์ปจํธ๋กคํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด์ ๋ค์๊ณผ ๊ฐ์ ๊ฐ์ฒด๋ค์ด ์๋ค๊ณ ๊ฐ์ ํด๋ด ์๋ค.
const slime = {
name: '์ฌ๋ผ์'
};
const cuteSlime = {
name: '์ฌ๋ผ์',
attribute: 'cute'
};
const purpleCuteSlime = {
name: '์ฌ๋ผ์',
attribute: 'cute',
color: 'purple'
};
console.log(slime);
console.log(cuteSlime);
console.log(purpleCuteSlime);
// ๊ฒฐ๊ณผ)
Object {name: '์ฌ๋ผ์'}
Object {name: '์ฌ๋ผ์', attribute: 'cute'}
Object {name: '์ฌ๋ผ์', attribute: 'cute', color: 'purple'}
์ด ์ฝ๋์์๋ ๋จผ์ slime ์ด๋ผ๋ ๊ฐ์ฒด๋ฅผ ์ ์ธํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ cuteSlime ์ด๋ผ๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์๋๋ฐ์, ๊ธฐ์กด์ ์ ์ธํ slime ์ ๊ฑด๋ค์ด์ง ์๊ณ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ slime ์ด ๊ฐ์ง๊ณ ์๋ ๊ฐ์ ๊ทธ๋๋ก ์ฌ์ฉํ์์ต๋๋ค.(์ฆ ๋จผ์ ์ ์ธํ ๊ฐ์ฒด๋ฅผ ๋ณต์ฌํด์ ๊ฐ์ ธ์จ๊ฒ ์ ๋๋ค.)
๊ทธ ๋ค์์๋ purpleCuteSlime ์ด๋ผ๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์๋๋ฐ์, ์ด ๊ฐ์ฒด๋ cuteSlime ์ด ๊ฐ์ง๊ณ ์๋ ์์ฑ์ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฉด์ ์ถ๊ฐ์ ์ผ๋ก color ๊ฐ ์ถ๊ฐ๋์์ต๋๋ค.
์ ์ฝ๋์์์ ํต์ฌ์, ๊ธฐ์กด์ ๊ฒ์ ๊ฑด๋ค์ด์ง ์๊ณ , ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ ๋ค๋ ๊ฒ ์ธ๋ฐ์, ์ด๋ฌํ ์ํฉ์ ์ฌ์ฉ ํ ์ ์๋ ์ ์ฉํ ๋ฌธ๋ฒ์ด spread ์ ๋๋ค.
์๊น ์ฝ๋๋ spread ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์์ฑ ํ ์ ์์ต๋๋ค.
const slime = {
name: '์ฌ๋ผ์'
};
const cuteSlime = {
...slime,
attribute: 'cute'
};
const purpleCuteSlime = {
...cuteSlime,
color: 'purple'
};
console.log(slime);
console.log(cuteSlime);
console.log(purpleCuteSlime);
// ๊ฒฐ๊ณผ)
{name: "์ฌ๋ผ์"}
{name: "์ฌ๋ผ์", attribute: "cute"}
{name: "์ฌ๋ผ์", attribute: "cute", color: "purple"}
์ฌ๊ธฐ์ ์ฌ์ฉํ ... ๋ฌธ์๊ฐ ๋ฐ๋ก spread ์ฐ์ฐ์์ ๋๋ค.
spread ์ฐ์ฐ์ ๋ฐฐ์ด์์๋ ์ฌ์ฉ ํ ์ ์์ต๋๋ค.
const animals = ['๊ฐ', '๊ณ ์์ด', '์ฐธ์'];
const anotherAnimals = [...animals, '๋น๋๊ธฐ'];
console.log(animals);
console.log(anotherAnimals);
// ๊ฒฐ๊ณผ)
['๊ฐ','๊ณ ์์ด','์ฐธ์']
['๊ฐ','๊ณ ์์ด','์ฐธ์', '๋น๋๊ธฐ']
๊ธฐ์กด์ animals ๋ ๊ฑด๋๋ฆฌ์ง ์์ผ๋ฉด์, ์๋ก์ด anotherAnimals ๋ฐฐ์ด์ animals ๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ด์ฉ์ ๋ชจ๋ ์ง์ด๋ฃ๊ณ , '๋น๋๊ธฐ' ๋ผ๋ ํญ๋ชฉ์ ์ถ๊ฐ์ ์ผ๋ก ๋ฃ์์ต๋๋ค.
๋ฐฐ์ด์์ spread ์ฐ์ฐ์๋ฅผ ์ฌ๋ฌ๋ฒ ์ฌ์ฉ ํ ์๋ ์์ต๋๋ค.
const numbers = [1, 2, 3, 4, 5];
const spreadNumbers = [...numbers, 1000, ...numbers];
console.log(spreadNumbers); // [1, 2, 3, 4, 5, 1000, 1, 2, 3, 4, 5]
rest
rest๋ ์๊น์๋ spread ๋ ๋น์ทํ๋ฐ, ์ญํ ์ด ๋งค์ฐ ๋ค๋ฆ ๋๋ค. rest๋ ๊ฐ์ฒด, ๋ฐฐ์ด, ๊ทธ๋ฆฌ๊ณ ํจ์์ ํ๋ผ๋ฏธํฐ์์ ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
๊ฐ์ฒด์์์ rest
์ฐ์ ๊ฐ์ฒด์์์ ์์๋ฅผ ์์๋ณผ๊น์?
const purpleCuteSlime = {
name: '์ฌ๋ผ์',
attribute: 'cute',
color: 'purple'
};
const { color, ...rest } = purpleCuteSlime;
console.log(color);
console.log(rest);
// ๊ฒฐ๊ณผ)
purple
Object {name: '์ฌ๋ผ์', attribute: 'cute'}
rest ์์ color ๊ฐ์ ์ ์ธํ ๊ฐ์ด ๋ค์ด์์ต๋๋ค.
rest ๋ ๊ฐ์ฒด์ ๋ฐฐ์ด์์ ์ฌ์ฉ ํ ๋๋ ์ด๋ ๊ฒ ๋น๊ตฌ์กฐํ ํ ๋น ๋ฌธ๋ฒ๊ณผ ํจ๊ป ์ฌ์ฉ๋ฉ๋๋ค. ์ฃผ๋ก ์ฌ์ฉ ํ ๋๋ ์์ ๊ฐ์ด rest ๋ผ๋ ํค์๋๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋๋ฐ์, ์ถ์ถํ ๊ฐ์ ์ด๋ฆ์ด ๊ผญ rest ์ผ ํ์๋ ์์ต๋๋ค.
const tion = (...ํ๋ผ๋ฏธํฐ๋ค) => {
ํ๋ผ๋ฏธํฐ๋ค.forEach(element => {
console.log(element)
});
};
tion(1,2,3,4,5);
// ๊ฒฐ๊ณผ)
1
2
3
4
5
Last updated
Was this helpful?