ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

'spread'์˜ ๋œป์€ ํŽผ์น˜๋‹ค, ๋ฟŒ๋ฆฌ๋‹ค.

๋‹จ์–ด์˜ ๋œป๊ณผ ๊ฐ™์ด ๋ฐฐ์—ด ๋‚ด์˜ ์š”์†Œ๋“ค์„ ํŽผ์ณ๋†“๋Š”๋‹ค.

์›๋ณธ์€ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋˜๊ณ  ๋ณต์‚ฌ๋ณธ์€ ์›ํ•˜๋Š” ๋Œ€๋กœ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— 

์ฃผ๋กœ ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด์„ ๋ณต์‚ฌํ•  ๋•Œ ์“ฐ์ธ๋‹ค.

 

Spread operator

 

๐Ÿ“๊ธฐ๋ณธ ํ˜•์‹

  • ์  ์„ธ ๊ฐœ(...)๋งŒ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.

1. ์–‘์ชฝ ๋Œ€๊ด„ํ˜ธ [ ] ๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค.

let a = [1, 2, 3]
console.log(...a) // 1 2 3
// console.log(1, 2, 3); -> 1 2 3

 

2. ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

let a = [1, 2, 3]
let b = [...a] // b๋Š” ์ƒˆ๋กœ์šด ๋ฐฐ์—ด

 

3. ๋‘ ๊ฐœ์˜ ๋ฐฐ์—ด์„ ํ•ฉ์น  ์ˆ˜ ์žˆ๋‹ค.

let a = [1, 2, 3]
let b = [4, 5, 6]

let c = [...a, ...b] // [1, 2, 3, 4, 5, 6]
console.log(c)

 

 

๐Ÿ“์™œ ์‚ฌ์šฉํ• ๊นŒ? (๋ฐฐ์—ด ์˜ˆ์‹œ)

  • ๊ฐ์ฒด ํƒ€์ž…์˜ ํŠน์ดํ•œ ๋ณต์‚ฌ ๋ฐฉ์‹ ๋•Œ๋ฌธ์ด๋‹ค.
  • ์›์‹œ ํƒ€์ž… ์˜ˆ์‹œ - ๋ฌธ์ž์—ด, ์ˆซ์ž, ๋ถˆ๋ฆฌ์–ธ, null, undefined ๋“ฑ
  • a์— ์žฌํ• ๋‹น์„ ํ•ด๋„ ๊ธฐ์กด์˜ b๊ฐ’์€ ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.
// ์›์‹œ ํƒ€์ž…
let a = 1 
let b = a

a = 2

console.log(a) // 2
console.log(b) // 1

 

  • ๊ฐ์ฒด ํƒ€์ž… ์˜ˆ์‹œ - array(๋ฐฐ์—ด), object(๊ฐ์ฒด)
  • a์™€ b๊ฐ€ ์™„์ „ํžˆ ๋™์ผํ•ด์ง„๋‹ค. (์ฐธ์กฐ ๋ณต์‚ฌ)
  • a๋ฅผ ๋ฐ”๊พธ๋ฉด b๋„ ๋ฐ”๋€œ => ์œ„ํ—˜ or React์—์„œ ์ถ”ํ›„์— ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.
  • b๋ฅผ ๋ฐ”๊ฟ”๋„ a๊ฐ€ ๋ฐ”๋€œ => ์œ„ํ—˜ or React์—์„œ ์ถ”ํ›„์— ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.
let a = [1, 2, 3]
let b = a

a[0] = 100 

console.log(a) // [100, 2, 3]
console.log(b) // [100, 2, 3]

 

  • ๋Œ€์•ˆ -> spread operator
let a = [1, 2, 3]
let b = [...a]

a[0] = 100;
console.log(a) // [100, 2, 3]
console.log(b) // [1, 2, 3]

 

 

๐Ÿ“๊ฐ์ฒด ์ ์šฉ ์˜ˆ์‹œ

  • ์–‘์ชฝ ์ค‘๊ด„ํ˜ธ { } ๋ฅผ ์ œ๊ฑฐํ•ด์ค€๋‹ค.
  • console.log๋กœ ๋ฐ”๋กœ ํ™•์ธํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค.
  • a: 1, b: 2 ๋ผ๋Š” ๋ฌธ๋ฒ•์€ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
let a = { a: 1 , b: 2 }
console.log(...a) // { a: 1, b: 1 }
// Uncaught TypeError: Spread syntax requires 
// ...iterable[Symbol.iterator] to be a function
//    at <anonymous>:1:9
// (์ต๋ช…) @ VM2572:1

console.log({...a}) // ์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•ด์„œ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.
// { a: 1 , b: 2 }

 

  • ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
let a = { a: 1 , b: 2 }
let b = { ...a }

console.log(b) // { a: 1, b: 2 }

 

  • ๋‘ ๊ฐ์ฒด๋ฅผ ํ•ฉ์น  ์ˆ˜ ์žˆ๋‹ค.
let a = { a: 1, b: 2 } 
let b = { c: 3, d: 4 }

let c = {...a, ...b}
console.log(c); // { a: 1, b: 2, c: 3, d: 4 }

 

  • key(ํ‚ค)๊ฐ€ ๊ฒน์น˜๋ฉด ๋’ค์˜ ํ‚ค & ๊ฐ’์œผ๋กœ ๋Œ€์ฒด๋œ๋‹ค.
let ์ฒซ๋ฒˆ์งธ = { a: 1, b: 2 }
let ๋‘๋ฒˆ์งธ = { ...์ฒซ๋ฒˆ์งธ, a: 3 }
// { b: 2, a: 3 }
๋‘๋ฒˆ์งธ.a

console.log(์ฒซ๋ฒˆ์งธ)

 

 

๐Ÿ“์‹ค์ „ ์˜ˆ์‹œ

  • spread ์‚ฌ์šฉ ์ „
const products = [
  {
    ๋ธŒ๋žœ๋“œ: "์ˆ˜์•„๋ ˆ",
    ์ƒํ’ˆ๋ช…: "์ผ€์ด๋ธ” ์นด๋ผ ๋ฐ˜ํŒ” ๋‹ˆํŠธ - 6 Color",
    ๊ฐ€๊ฒฉ: 39900,
  },
  {
    ๋ธŒ๋žœ๋“œ: "์ปค๋ฒ„๋‚ซ",
    ์ƒํ’ˆ๋ช…: "์—์„ผ์…œ ์–ด์ฉŒ๊ณ ",
    ๊ฐ€๊ฒฉ: 34300,
  },
];

const newProducts = products.map((product) => {
  return {
    ๋ธŒ๋žœ๋“œ: product.๋ธŒ๋žœ๋“œ,
    ์ƒํ’ˆ๋ช…: product.์ƒํ’ˆ๋ช…,
    ๊ฐ€๊ฒฉ: product.๊ฐ€๊ฒฉ * 0.8,
  };
});

console.log(newProducts);

 

  • spread ์‚ฌ์šฉ ํ›„
const newProducts = products.map((product) => {
  return {
    ...product,
    ๊ฐ€๊ฒฉ: product.๊ฐ€๊ฒฉ * 0.8,
  };
});
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2026/03   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ