[TIL] spread/rest ๋ฌธ๋ฒ• ๐Ÿ™‚

๊น€์œคํ˜œยท2022๋…„ 11์›” 8์ผ
0

ES6 ์ฃผ์š” ๋ฌธ๋ฒ•; spread/rest๋ฌธ๋ฒ•, ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น(destructing)


spread๋ฌธ๋ฒ•; ๋ฐฐ์—ด์„ ํ’€๊ธฐ

const numbers = [1, 2, 3];
console.log(...numbers) // 1 2 3

**sum(...numbers) // (1, 2, 3) ๋ฐฐ์—ด -> ๋„˜๋ฒ„๋กœ ํ’€์–ด์ค€๋‹ค.

**function sum(x, y, z) {
	return x + y + z; // numbers.[0] + numbers.[1] + numbers.[2]
}

sum(...numbers) // 6

rest๋ฌธ๋ฒ•; ๋ฐฐ์—ด๋กœ ๋ฌถ๊ธฐ

function sum(...Args) { // ์ „๋‹ฌ์ธ์ž(1, 2, 3) => [1, 2, 3]
	return Args.reduce((previous, current) => {
    	return previous + current;
    });
}

sum(1, 2, 3) // 6

๋ฐฐ์—ด์—์„œ์˜ ์‚ฌ์šฉ

  • ๋ฐฐ์—ด ํ•ฉ์น˜๊ธฐ
let word = ['a', 'b', 'c'];
let Alphbet = [...word, 'd'];

Alphbet; // ['a', 'b', 'c', 'd']

  • ๋ฐฐ์—ด ๋ณต์‚ฌ
let word1 = ['a', 'b', 'c'];
let word2 = [...word];


word2.push('d'); // 4
word2; // ['a', 'b', 'c', 'd']
word1; // ['a', 'b', 'c']

๊ฐ์ฒด์—์„œ์˜ ์‚ฌ์šฉ

let user1 = { name: 'anna', age: '25' };
let user2 = { name: 'mary', gender: 'female' };

let Cloneuser1 = {...user1};
let Mergeusers = {...user1, ...user2};

console.log(Cloneuser1); // { name: 'anna', age: '25' };
console.log(Mergeusers); // { name: 'mary', age: '25', gender: 'female' };

ํ•จ์ˆ˜์—์„œ์˜ ๋‚˜๋จธ์ง€ ํŒŒ๋ผ๋ฏธํ„ฐ ๋ฐ›๊ธฐ

function number(a, b, ...manyMoreArgs) {
  console.log("1", a);
  console.log("2", b);
  console.log("manyMoreArgs", manyMoreArgs);
}

number("one", "two", "three", "four", "five", "six");
//1 one 2 two ['three', 'four', 'five', 'six']

๋ถ„ํ•ด ํ›„ ์ƒˆ ๋ณ€์ˆ˜์— ํ• ๋‹น

  • ๋ฐฐ์—ด
const [a, b, ...rest] = [1, 2, 3, 4, 5];

// ๋ณ€์ˆ˜ a, b, rest์— ๊ฐ ๊ฐ’์„ ํ• ๋‹น
console.log(a); // 1
console.log(a); // 2
console.log(rest); // [3, 4, 5]

  • ๊ฐ์ฒด
const {a, b, ...rest} = {a: 1, b: 2, c: 3, d: 4, e: 5};

// ๋ณ€์ˆ˜ a, b์— ๊ฐ’๋งŒ ํ• ๋‹น / ๋ณ€์ˆ˜ rest์— ๊ฐ์ฒด๋กœ ํ• ๋‹น
console.log(a); // 1
console.log(a); // 2
console.log(rest); // {c: 3, d: 4, e: 5}
profile
๋ณธ์งˆ์—๋Š” ์ผ์น˜๋ฅผ, ๋น„๋ณธ์งˆ์—๋Š” ๊ด€์šฉ์„, ์ด ๋ชจ๋“  ๊ฒƒ์— ์‚ฌ๋ž‘์„

0๊ฐœ์˜ ๋Œ“๊ธ€