TL;DR
slice()
๋ฉ์๋๋ ๋ณต์ฌ+์ถ์ถ์ ๊ฐ๋ ,splice()
๋ฉ์๋๋ ์ ๊ฑฐ+์ถ์ถ์ ๊ฐ๋ ์ด๋ค.- ๋๋ฌธ์ ์๋ณธ ๋ฐฐ์ด์ด ์ ์ง๋์ด์ผ ํ ๋๋
slice()
๋ฉ์๋๋ฅผ, ์๋ณธ ๋ฐฐ์ด์ ๋ณ๊ฒฝํด์ผ ํ ๋๋splice()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค. - ํนํ ์์๋ฅผ ์ญ์ ํ๊ณ ๊ณง๋ฐ๋ก ๊ทธ ์์น์ ์๋ก์ด ์์๋ฅผ ์ฝ์
ํ๊ณ ์ถ๋ค๋ฉด
splice()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
๋ฌธ์
์๋ array ๋ฐฐ์ด์ ๊ฐ์ ๊ทธ๋๋ก ์ ์งํ ์ฑ, ๋งจ ์์ ๋ ์์๊ฐ ์ ๊ฑฐ๋ ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ค์ด ์ถ๋ ฅํ๋ ค๊ณ ํ๋ค. ๋ ์ค ์ด๋ค ๋ฉ์๋๋ฅผ ์จ์ผํ ๊น?
const array = [1, 2, 3, 4, 5];
1. splice()
Removes elements from an array and, if necessary, inserts new elements in their place, returning the deleted elements.
splice()๋ ๋ฐฐ์ด์์ ์์๋ค์ ์ ๊ฑฐํ๊ณ , ์ ๊ฑฐ๋ ์์๋ค์ ๋ฐฐ์ด๋ก ๋ฐํํ๋ ๋ฉ์๋์ด๋ค. ํ์์ ๋ฐ๋ผ ์๋ก์ด ์์๋ค์ ์ฝ์ ํ ์๋ ์๋ค.
โฝ ์์ ์ ๊ฑฐํ๊ธฐ
splice(start: number, deleteCount?: number): T[];
start
: ์ ๊ฑฐ๋ฅผ ์์ํ ์์น(์ธ๋ฑ์ค 0์ ๊ธฐ์ค)deleteCount
- ์ด ์ ๊ฑฐํ ์์์ ๊ฐ์
- ์๋ตํ๋ฉด ๋ฐฐ์ด์ ๋ง์ง๋ง ์ธ๋ฑ์ค ์์๊น์ง ์ ๋ถ ์ ๊ฑฐ
๋งจ ์์ ๋ ์์๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํด splice()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
const array = [1, 2, 3, 4, 5];
const newArray = array.splice(0, 2);
console.log(newArray); // [1, 2]
console.log(array); // [3, 4, 5]
newArray ๋ณ์์ 0๋ฒ์งธ ์ธ๋ฑ์ค๋ถํฐ ์ ๊ฑฐ๋ 2๊ฐ์ ์์๊ฐ ๋ฐฐ์ด๋ก ๋ฐํ๋์ด ๋ด๊ฒผ๋ค. ๊ทธ๋ฐ๋ฐ ์๋ณธ ๋ฐฐ์ด array ๋ํ 2๊ฐ์ ์์๊ฐ ์ ๊ฑฐ๋์ด ๋ณ๊ฒฝ๋์ด๋ฒ๋ ธ๋ค.
๋ฌธ์ ์์ array ์ ๊ฐ์ ๊ทธ๋๋ก ์ ์งํด์ผ ํ๋ค๊ณ ํ๋ค. ๋ฐ๋ผ์ ์๋ณธ ๋ฐฐ์ด์ด ์ ์ง๋์ด์ผ ํ ๋์ splice()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๊ฑด ์ ํฉํ ๋ฐฉ๋ฒ์ด ์๋๋ค. ๊ทธ๋ฌ๋ฉด splice()
๋ฉ์๋๋ ์ธ์ ์ฌ์ฉํ๋ ๊ฑธ๊น?!
โฝ ์์ ์ฝ์ ํ๊ธฐ
splice()
๋ฉ์๋๋ ๋ฐฐ์ด์ ์ค๊ฐ์ ์๋ก์ด ์์๋ฅผ ์ฝ์
ํด์ผํ ๋ ์ ์ฉํ๋ค.
splice(start: number, deleteCount: number, ...items: T[]): T[];
start
- ์ ๊ฑฐ๋ฅผ ์์ํ ์์น(์ธ๋ฑ์ค 0์ ๊ธฐ์ค)
deleteCount
- ์ด ์ ๊ฑฐํ ์์์ ๊ฐ์(์๋ต ๋ถ๊ฐ)
...items
- ๋ฐฐ์ด์ ์๋กญ๊ฒ ์ฝ์ ๋ ์์๋ค์ ์ฝค๋ง๋ก ๊ตฌ๋ถํ์ฌ ์ ๋ฌ
- ์ฒซ๋ฒ์งธ ์ธ์๋ฅผ ๊ธฐ์ค ์ธ๋ฑ์ค๋ก ํ์ฌ, ์ฐจ๋ก๋๋ก ๋ฐฐ์ด์ ์ฝ์
const array = [1, 2, 3, 4, 5];
const newArray = array.splice(0, 2, 10);
console.log(newArray); // [1, 2]
// 0๋ฒ์งธ ์ธ๋ฑ์ค์์๋ถํฐ 2๊ฐ์ ์์๊ฐ ์ญ์ ๋๊ณ , ๊ทธ ์๋ฆฌ(0)์ 10์ด ์ฝ์
๋๋ค
console.log(array); // [10, 3, 4, 5]
const newArray2 = array.splice(1, 0, 11, 12);
// ๋ณ๊ฒฝ๋ array๋ฅผ ๊ธฐ์ค์ผ๋ก ์ธ๋ฑ์ค 1์์๋ถํฐ 0๊ฐ์ ์์๋ฅผ ์ญ์ ํ๋ค
// ๋ฐ๋ผ์ newArray2์๋ ๋น ๋ฐฐ์ด์ด ๋ฐํ๋๋ฉฐ,
// ์๋ณธ ๋ฐฐ์ด array๋ ์ธ๋ฑ์ค 1์์๋ถํฐ 11, 12๊ฐ ์ฐจ๋ก๋๋ก ์ฝ์
๋์ด ๋ณ๊ฒฝ๋๋ค
console.log(newArray); // []
console.log(array); // [10, 11, 12, 3, 4, 5]
์ญ์ ํ ์์๊ฐ ์์ด๋ ๋๋ฒ์งธ ์ธ์์ ๊ฐ์ ์ ๋ฌํด์ผ ํจ์ ์ ์ํ์. ์ฝ์ ํ ์์๋ค์ ๋ฉ์๋์ ์ธ๋ฒ์งธ ์ธ์๋ถํฐ ๋ฃ์ด์ค์ผ ์ ํจํ๋ค!
2. slice()
Returns a section of an array.
slice()
๋ฉ์๋๋ ํน์ ์์น์ ์์๋ค์ ๋ฐฐ์ด๋ก ๋ฐํํ๋ค.
์ฌ๊ธฐ์ splice()
๋ฉ์๋์ ์ฐจ์ด๊ฐ ๋๊ปด์ง๋ค. ์ด๋์๋ ๋ฐฐ์ด์์ ์์๋ฅผ ์ญ์ ํ๋ค๋ ๋ง์ ๋ณด์ด์ง ์๋๋ค.
โฝ ์์ ์ถ์ถํ๊ธฐ
slice(start?: number, end?: number): T[];
start
: ์ถ์ถํ ์์ ์์นend
- ์ถ์ถ์ ์ข ๋ฃ ์์น
- ํด๋น ์ธ๋ฑ์ค์ ์์๋ ์ถ์ถ์ ๋ฒ์์์ ๋ฏธํฌํจ
- ์๋ตํ๋ฉด ๋ฐฐ์ด์ ๋ง์ง๋ง ์์๊น์ง ์ ๋ถ ํฌํจ
์ด๋ฒ์๋ slice()
๋ฉ์๋๋ฅผ ์ฌ์ฉํด ์์๋ฅผ ์ ๊ฑฐํ๋ค.
const array = [1, 2, 3, 4, 5];
const newArray1 = array.slice(2, 5);
const newArray2 = array.slice(2);
console.log(newArray1); // [3, 4, 5]
console.log(newArray2); // [3, 4, 5]
console.log(array); // [1, 2, 3, 4, 5]
newArray1 ์ 2๋ฒ์งธ ์ธ๋ฑ์ค์์๋ถํฐ 4๋ฒ์งธ ์ธ๋ฑ์ค(์ธ๋ฑ์ค 5๋ ๋ฏธํฌํจ)์ ํด๋นํ๋ ์์๋ค์ด ์ถ์ถ๋์ด ๋ด๊ฒผ๋ค. newArray2 ์๋ ๋๋ฒ์งธ ์ธ์๊ฐ ์๋ต๋์ด, ์ธ๋ฑ์ค 2์์๋ถํฐ ๋ฐฐ์ด์ ๋๊น์ง ์ถ์ถ๋ ๊ฐ์ด ๋ด๊ฒผ๋ค. ๊ฒฐ๊ตญ newArray1 ๊ณผ ๋์ผํ๋ค๐. ์ฌ๊ธฐ์ ๊ฐ์ฅ ์ค์ํ ์ ์ ์๋ณธ array ๋ ๋ณ๊ฒฝ๋์ง ์์๋ค๋ ๊ฒ์ด๋ค.
โฝ ๊น์ ๋ณต์ฌํ๊ธฐ
๊ทธ๋ฆฌ๊ณ slice()
๋ฉ์๋์ ๋๋ค๋ฅธ ํน์ง์ ๋ชจ๋ ์ธ์๋ฅผ ์๋ตํ ์ ์๋ค๋ ๊ฒ์ด๋ค. ์ธ์๋ฅผ ์๋ฌด๊ฒ๋ ์ ๋ฌํ์ง ์์ ๊ฒฝ์ฐ์๋ ์๋์ ๊ฐ์ด ๋ชจ๋ ์์๋ฅผ ์ถ์ถํ ๋ฐฐ์ด์ด ๋ฐํ๋๋ค. ์ด ๋๋ ์ญ์ ์์ ํ ์๋ก์ด ์ฐธ์กฐ๊ฐ์ ๊ฐ๋ ๋ฐฐ์ด์ ๋ง๋ค์ด ๋ฐํํ๋ฏ๋ก ๋ฐฐ์ด์ ๊น์ ๋ณต์ฌ์ ํจ๊ณผ๋ฅผ ๋
๋๋ค.
const array = [1, 2, 3, 4, 5];
const newArray = array.slice();
console.log(newArray); // [1, 2, 3, 4, 5]
console.log(array); // [1, 2, 3, 4, 5]
๋จ, ๋ฐฐ์ด์ ์์๊ฐ์ด ๊ธฐ๋ณธํ์ผ ๋๋ง ๊น์ ๋ณต์ฌ๊ฐ ๋๋ค. ๊ฐ์ด ์ฐธ์กฐํ์ธ ์์๋ ์์ ๋ณต์ฌ๋ง ์ด๋ฃจ์ด์ง๋ค.