๋ฐ˜์‘ํ˜•

 

์Šคํ”„๋ ˆ๋“œ ์—ฐ์‚ฐ์ž๋ž€?

์Šคํ”„๋ ˆ๋“œ ์—ฐ์‚ฐ์ž(Spread Operator)๋Š” ES6์—์„œ ๋„์ž…๋œ ๊ธฐ๋Šฅ์œผ๋กœ, ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด๋ฅผ ํŽผ์น˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์—ฐ์‚ฐ์ž๋Š” ์„ธ ๊ฐœ์˜ ์ ( ... )์œผ๋กœ ํ‘œํ˜„๋˜๋ฉฐ, ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์—์„œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ฃผ์š” ์šฉ๋„

1. ๋ฐฐ์—ด ๋ณต์‚ฌ ๋ฐ ๋ณ‘ํ•ฉ

const arr1 = [1, 2, 3];
const arr2 = [...arr1, 4, 5]; // [1, 2, 3, 4, 5]

const combined = [...arr1, ...arr2]; // [1, 2, 3, 1, 2, 3, 4, 5]

2. ๊ฐ์ฒด ๋ณต์‚ฌ ๋ฐ ๋ณ‘ํ•ฉ

const obj1 = { foo: 'bar', x: 42 };
const obj2 = { foo: 'baz', y: 13 };

const clonedObj = { ...obj1 }; // { foo: 'bar', x: 42 }
const mergedObj = { ...obj1, ...obj2 }; // { foo: 'baz', x: 42, y: 13 }

3. ํ•จ์ˆ˜ ์ธ์ž๋กœ ์ „๋‹ฌ

function sum(x, y, z) {
  return x + y + z;
}

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

 

์ฃผ์˜์‚ฌํ•ญ

1. ์Šคํ”„๋ ˆ๋“œ ์—ฐ์‚ฐ์ž๋Š” ์–•์€ ๋ณต์‚ฌ(Shallow Copy)๋งŒ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด์˜ ์ตœ์ƒ์œ„ ์ˆ˜์ค€์˜ ์†์„ฑ๋งŒ ๋ณต์‚ฌ๋˜๋ฉฐ, ์ค‘์ฒฉ๋œ ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด์— ๋Œ€ํ•ด์„œ๋Š” ์ฐธ์กฐ๋งŒ ๋ณต์‚ฌ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ณต์‚ฌ๋œ ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด ๋‚ด์˜ ์ค‘์ฒฉ๋œ ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด์€ ์›๋ณธ๊ณผ ๋™์ผํ•œ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค.

// ๋ฐฐ์—ด์˜ ๊ฒฝ์šฐ
const originalArray = [1, [2, 3]];
const copiedArray = [...originalArray];

copiedArray[0] = 10; // ์ตœ์ƒ์œ„ ์š”์†Œ๋Š” ๋…๋ฆฝ์ 
copiedArray[1][0] = 20; // ์ค‘์ฒฉ๋œ ๋ฐฐ์—ด์€ ์ฐธ์กฐ๊ฐ€ ๋ณต์‚ฌ๋จ

console.log(originalArray); // [1, [20, 3]]
console.log(copiedArray);  // [10, [20, 3]]

2. ๊ฐ์ฒด์— ์‚ฌ์šฉํ•  ๋•Œ, ์ค‘๋ณต๋œ ํ‚ค๊ฐ€ ์žˆ๋‹ค๋ฉด ๋‚˜์ค‘์— ์˜ค๋Š” ๊ฐ’์ด ์ด์ „ ๊ฐ’์„ ๋ฎ์–ด์”๋‹ˆ๋‹ค.

 

ํ™œ์šฉ ์˜ˆ์‹œ

1. ๋ฐฐ์—ด ์š”์†Œ ์ถ”๊ฐ€/์ œ๊ฑฐ

const fruits = ['apple', 'banana'];
const moreFruits = ['mango', ...fruits, 'orange']; // ['mango', 'apple', 'banana', 'orange']

const [first, ...rest] = moreFruits;
console.log(first); // 'mango'
console.log(rest); // ['apple', 'banana', 'orange']

2. ๋ฌธ์ž์—ด์„ ๊ฐœ๋ณ„ ๋ฌธ์ž๋กœ ๋ถ„๋ฆฌ

const str = "Hello";
const chars = [...str]; // ['H', 'e', 'l', 'l', 'o']

3. ๋ฐฐ์—ด ์ค‘๋ณต ์ œ๊ฑฐํ•˜๊ธฐ

const arr = [1, 2, 3, 2, 4, 4]
const uniqueArr = [...new Set(arr)]; // [1, 2, 3, 4]

4. ๋ฐฐ์—ด ๋‚ด ์ตœ๋Œ€/์ตœ์†Œ๊ฐ’ ์ฐพ๊ธฐ

const numbers = [5, 2, 8, 1, 9];
const max = Math.max(...numbers); // 9
const min = Math.min(...numbers); // 1

5. ์กฐ๊ฑด๋ถ€๋กœ ๊ฐ์ฒด ์†์„ฑ ์ถ”๊ฐ€

const addUser = (age) =>  {
  return {
    name: "Yundogi",
    ...(age > 18 && { canVote: true })
  };
};

console.log(addUser(26)) // {name: 'Yundogi', canVote: true}

6. NodeList ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜

const divs = document.querySelectorAll('div');
const divsArray = [...divs];
๋ฐ˜์‘ํ˜•
์œค๋„๊ธฐ