ํฐ์คํ ๋ฆฌ ๋ทฐ
'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,
};
});'Language > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| JQuery CDN ์ด๋? (0) | 2025.01.19 |
|---|---|
| [๐ฆ] JS ๋ฌธ๋ฒ - Destructuring (๊ตฌ์กฐ ๋ถํด ํ ๋น) (0) | 2025.01.18 |
| [๐ฆ] ๋ฐฐ์ด ๋ฉ์๋(4) - map (0) | 2025.01.18 |
| [๐ฆ] ๋ฐฐ์ด ๋ฉ์๋(3) - filter (0) | 2025.01.18 |
| [๐ฆ] ๋ฐฐ์ด ๋ฉ์๋ (2) - find (0) | 2025.01.18 |