๐ ๋ฐฐ์ด์ ํน์ ์ธ๋ฑ์ค๋ฅผ ์ ๊ฑฐํ๊ฑฐ๋ ํน์ ๋ฒ์๋ง ๋ฐํํ๋ ํจ์, filter, splice, slice
์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ํ๋ค๊ฐ ๋ฐฐ์ด์ ํน์ ์์๋ ์ธ๋ฑ์ค๋ฅผ ์ญ์ ํ๊ฑฐ๋ ํน์ ๋ฒ์๋ฅผ ์ ๊ฑฐํ๊ณ ์ถ์ด MDN
์ ์ฐพ์๋ณด๋๊น ์ฌ๋ฌ๊ฐ์ง ํจ์๊ฐ ์กด์ฌํ๋ค. ์ํฉ๋ง๋ค ๋ค๋ฅด์ง๋ง ๋ก์ง์ ๊ตฌํํ ๋ ๋ค์์ ์ ํ์ง๋ฅผ ๋ณด๊ณ ๊ณจ๋ผ์ ์ฌ์ฉํ๋ฉด ๋๋ค.
์๋ณธ ๋ฐฐ์ด์ ๋ณ๊ฒฝํ๊ณ ์ถ์ง์๊ณ ํน์ ์ธ๋ฑ์ค๋ฅผ ์ ๊ฑฐํ๊ณ ์ถ์ ๋(์๋ก์ด ๋ณ์์ ์ ์ธํ๊ณ ์ถ์ ๋)
- filter: ์ฃผ์ด์ง ํจ์์ ํ
์คํธ๋ฅผ ํต๊ณผํ๋ ๋ชจ๋ ์์๋ฅผ ๋ชจ์ ์๋ก์ด ๋ฐฐ์ด๋ก ๋ฐํํ๋ค.
arr.filter(callback(element[, index ?[, array ?]])[, thisArg ?])
์๋ณธ ๋ฐฐ์ด์ ๋ณ๊ฒฝํ๊ณ ํน์ ์ธ๋ฑ์ค๋ฅผ ์ ๊ฑฐํ๊ณ ์ถ์ ๋(์๋ก์ด ๋ณ์์ ์ ์ธํ๊ณ ์ถ์ ์์ ๋)
- splice: ๋ฐฐ์ด์ ๊ธฐ์กด ์์๋ฅผ ์ญ์ ๋๋ ๊ต์ฒดํ๊ฑฐ๋ ์ ์์๋ฅผ ์ถ๊ฐํ์ฌ ๋ฐฐ์ด์ ๋ด์ฉ์ ๋ณ๊ฒฝํ๋ค.
(array.splice(start, delete ?, item ?))
์๋ณธ ๋ฐฐ์ด์ ๋ณ๊ฒฝํ๊ณ ์ถ์ง ์๊ณ ํน์ ๋ฒ์๋ฅผ ์๋ผ๋ด๊ณ ์ถ์ ๋
- slice: ์ด๋ค ๋ฐฐ์ด์
begin
๋ถํฐend
๊น์ง(end
๋ ๋ฏธํฌํจ)์ ๋ํ ์์ ๋ณต์ฌ(shallow copy)๋ณธ์ ์๋ก์ด ๋ฐฐ์ด ๊ฐ์ฒด๋ก ๋ฐํ์ํจ๋ค.arr.slice(begin ?, end ?)
์ ์๋ง ๋ด์๋ ์ ์ดํด๊ฐ ์ ๋๋๊น ์ฝ๊ฒ ์๋ฅผ ๋ค์ด๋ณด์. ๋ค์์ arr
์์ ๋๋ arr[2]
์ ๊ฐ์ ์ ๊ฑฐํ๊ณ , arr
์ [1 : 3]
๋ฒ์๋ง ์๋ฅด๊ณ ์ถ๋ค๊ณ ํ ๋ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ ์ ์๋ค.
const arr = [0, 2, 1, 6]
// filter
const filterArr = arr.filter((item) => item !== arr[2])
console.log(filterArr)
๐๐ฝ [0, 2, 6]
// splice
arr.splice(2)
console.log(arr)
๐๐ฝ [0, 2, 6]
// slice
const sliceArr = arr.slice(1, 3)
console.log(sliceArr)
๐๐ฝ [2, 1]
์ฌ๋ด์ผ๋ก slice
๋ ์๋ณธ ๊ฐ์ฒด๋ฅผ ์์ ๋ณต์ฌ(shallowCopy)
๊น์ง ๊ฐ๋ฅํ๋ฐ, ์ ๋ง ์์ ๋ณต์ฌ(shallowCopy)
๊น์ง๋ง ๋๋์ง ์คํํด๋ดค๋ค. ์คํ ๊ฒฐ๊ณผ depth = 2
์ธ ๊ฐ์ ๋ณ๊ฒฝ ์ ์๋ณธ ๊ฐ๋ ๋ณ๊ฒฝ๋ ๊ฒ์ผ๋ก ๋ณด์ ๊ฒฐ๋ก ์ ์ผ๋ก ์์๋ณต์ฌ๊น์ง๋ง ๊ฐ๋ฅํ๋ค.
// depth = 1์ผ ๋ slice
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const copyArr = arr.slice();
arr[2] = -9999
console.log(copyArr)
๐๐ฝ [1, 2, 3, 4, 5, 6, 7, 8, 9];
// depth = 2์ผ ๋ slice
const arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
const copyArr = arr.slice();
arr[0][2] = -9999
console.log(copyArr)
๐๐ฝ [[1, 2, -9999], [4, 5, 6], [7, 8, 9]];
๋๊ธ