JavaScript์์ ๋ฐฐ์ด์ ์ค๋ณต๋ ์์๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ์ ๋งค์ฐ ํํ ์์ ์ ๋๋ค. ๊ฐ๊ฐ์ ๋ฐฉ๋ฒ์๋ ์ฅ๋จ์ ์ด ์์ผ๋, ์ํฉ์ ๋ง๋ ์ต์ ์ ๋ฐฉ๋ฒ์ ์ ํํ์๋ฉด ๋ฉ๋๋ค.
1. Set ๊ฐ์ฒด ์ฌ์ฉํ๊ธฐ
๊ฐ์ฅ ํ๋์ ์ด๊ณ ๊น๋ํ ๋ฐฉ๋ฒ์ ๋๋ค.
์ฅ์ :
- ์ฝ๋๊ฐ ๊ฐ๊ฒฐํ๊ณ ์ฝ๊ธฐ ์ฝ์ต๋๋ค
- ์ฑ๋ฅ์ด ์ฐ์ํฉ๋๋ค
- ES6+ ํ๊ฒฝ์์ ๊ถ์ฅ๋๋ ๋ฐฉ์์ ๋๋ค
๋จ์ :
- IE์์๋ ์ง์๋์ง ์์ต๋๋ค (ํด๋ฆฌํ ํ์)
2. filter() ๋ฉ์๋ ํ์ฉํ๊ธฐ
๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ ๋น๊ตํ๋ ๋ฐฉ์์ ๋๋ค.
์ฅ์ :
- ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ด ์ข์ต๋๋ค
- ์ถ๊ฐ์ ์ธ ์กฐ๊ฑด์ ๋ฃ๊ธฐ ์ฝ์ต๋๋ค
์ฃผ์์ฌํญ:
- ๋ฐฐ์ด์ด ํฐ ๊ฒฝ์ฐ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ต๋๋ค
- indexOf๋ ์ฐธ์กฐ๊ฐ ๋น๊ต์ ์ํ๋ ๊ฒฐ๊ณผ๊ฐ ์๋์ฌ ์ ์์ต๋๋ค
3. reduce() ๋ฉ์๋ ์ฌ์ฉํ๊ธฐ
๋์ฐ๊ธฐ(accumulator)๋ฅผ ํ์ฉํ ๋ฐฉ๋ฒ์ ๋๋ค.
์ฅ์ :
- ๋ณต์กํ ๋ก์ง์ ์ถ๊ฐํ๊ธฐ ์ข์ต๋๋ค
- ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ ์ ๋๋ค
๋จ์ :
- ์ฝ๋๊ฐ ๋น๊ต์ ๋ณต์กํฉ๋๋ค
- ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง ์ ์์ต๋๋ค
4. Object์ ํค๋ฅผ ํ์ฉํ๋ ๋ฐฉ๋ฒ
๊ฐ์ฒด์ ํค๋ ์ค๋ณต๋ ์ ์๋ค๋ ํน์ฑ์ ํ์ฉํฉ๋๋ค.
์ฅ์ :
- ๋น ๋ฅธ ๊ฒ์ ์ฑ๋ฅ
- ํฐ ๋ฐ์ดํฐ์ ์ ํจ์จ์ ์ ๋๋ค
๋จ์ :
- ๋ฌธ์์ด์ด๋ ์ซ์๋ง ์ฒ๋ฆฌ ๊ฐ๋ฅํฉ๋๋ค
- ๊ฐ์ฒด๋ ๋ฐฐ์ด์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค
5. lodash ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉํ๊ธฐ
์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ ๋ฐฉ๋ฒ์ ๋๋ค.
์ฅ์ :
- ๋งค์ฐ ์์ ์ ์ ๋๋ค
- ๋ค์ํ ์๋ฃํ ์ฒ๋ฆฌ ๊ฐ๋ฅํฉ๋๋ค
- ์ฑ๋ฅ์ด ์ต์ ํ๋์ด ์์ต๋๋ค
๋จ์ :
- ์ธ๋ถ ์์กด์ฑ์ด ์๊น๋๋ค
- ๋ฒ๋ค ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํฉ๋๋ค
์ฑ๋ฅ ๋น๊ต ๐
๋ฐฐ์ด ํฌ๊ธฐ๊ฐ ์์ ๊ฒฝ์ฐ(1000๊ฐ ๋ฏธ๋ง):
- Set ๊ฐ์ฒด ๋ฐฉ์
- filter() ๋ฐฉ์
- reduce() ๋ฐฉ์
๋ฐฐ์ด ํฌ๊ธฐ๊ฐ ํฐ ๊ฒฝ์ฐ(1000๊ฐ ์ด์):
- Set ๊ฐ์ฒด ๋ฐฉ์
- Object ํค ๋ฐฉ์
- lodash ๋ฐฉ์
๋ง๋ฌด๋ฆฌ
์ํฉ์ ๋ฐ๋ผ ์ ์ ํ ๋ฐฉ๋ฒ์ ์ ํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ์๋ Set ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ถ์ฒ๋๋ ๋ฐฉ๋ฒ์ด์ง๋ง, IE ์ง์์ด ํ์ํ๊ฑฐ๋ ํน๋ณํ ์๊ตฌ์ฌํญ์ด ์๋ค๋ฉด ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ๊ณ ๋ คํด๋ณด์ธ์.
์ฝ๋์ ์ ์ง๋ณด์์ฑ๊ณผ ์ฑ๋ฅ์ ๋ชจ๋ ๊ณ ๋ คํ์ฌ, ํ๋ก์ ํธ์ ํน์ฑ์ ๋ง๋ ์ต์ ์ ๋ฐฉ๋ฒ์ ์ ํํ์๊ธฐ ๋ฐ๋๋๋ค. ๐ฏ