[JS] ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐฐ์ด ์ค๋ณต ์์ ์ ๊ฑฐ ๋ฐฉ๋ฒ ๋ชจ์
๋ฐฉ๋ฒ 1 — Set ์ด์ฉ โญ๏ธ
Set์ ์ด์ฉํด ์ค๋ณต ์์๋ฅผ ์ ๊ฑฐํ๋ ๋ฐฉ์์ ์ฑ๋ฅ์ด ๊ฐ์ฅ ์ข๋ค
Set
์ ์ ๋ํฌํ ๊ฐ๋ง ์ ์ฅํ ์ ์๊ธฐ ๋๋ฌธ์ new Set()
์ธ์์ ๋ค์ด์จ ๋ฐฐ์ด์ ์ค๋ณต ์์๋ ์๋์ผ๋ก ์ ๊ฑฐ๋๋ค. Array.from
์ โ์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด๋ โ๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฐ์ฒด๋ฅผ ์๊ฒ ๋ณต์ฌํด ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํ๋ค. ์ ๊ฐ๋ฌธ๋ฒ์ ์ฌ์ฉํด๋ ๊ฒฐ๊ณผ๋ ๋์ผ.
const arr = ["A", "B", "A", "D", "B", "F"];
const deDuplicated = [...new Set(arr)];
// const deDuplicated = Array.from(new Set(arr))
console.log(deDuplicated); // [ 'A', 'B', 'D', 'F' ]
Set, Map ๊ด๋ จ ๋ ์์ธํ ๋ด์ฉ์ Map / Set ์๋ฃ๊ตฌ์กฐ ๋ ธํธ ์ฐธ๊ณ .
new Set([iterable])
: ์๋ก์ด Set ์์ฑset.add(value)
: value ์ถ๊ฐ ํ Set ๋ฐํ. ๋ง์ฝ ์ธ์์ ์ ๋ ฅํ value๊ฐ ๊ธฐ์กด Set ์์ ์์ผ๋ฉด ์๋ฌด๋ฐ ์์ ์ํจset.delete(value)
: ๊ฐ ์ ๊ฑฐํ, ์ ๊ฑฐ ์ฑ๊ณต ์ฌ๋ถ true / false ๋ฐํset.has(value)
: ์ธ์์ ์ ๋ ฅํ value๊ฐ Set์ ์กด์ฌํ๋์ง ํ์ธ. Boolean ๊ฐ ๋ฐํset.clear()
: Set ์ด๊ธฐํset.size
: Set์ ๋ช๊ฐ์ value๊ฐ ์๋์ง ํ์ธ
๋ฐฉ๋ฒ 2 — filter / indexOf ์ด์ฉ
์ค๋ณต๊ฐ๋ง ๋ฐ๋ก ๋ฐฐ์ด์ ๋ด๊ณ ์ถ์ ๋ ์ ์ฉ
arr.indexOf()
๋ฉ์๋๋ ์ธ์์ ์
๋ ฅํ ์์๊ฐ ๋ฐฐ์ด์ ์กด์ฌํ๋ฉด ํด๋น ์์์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํ๋ค. ์ธ์์ ์
๋ ฅํ ์์๊ฐ ๋ฐฐ์ด์ ์ฌ๋ฌ๊ฐ ์์ด๋ ์ฒซ๋ฒ์งธ๋ก ์ฐพ์ ์์์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํ๋ค. ์์ผ๋ฉฐ -1
๋ฐํ.
filter ๋ฉ์๋๋ก arr
๋ฐฐ์ด์ 2๋ฒ์งธ ์ธ๋ฑ์ค์ ์๋ A
์์๋ฅผ ์ํํ ๋์ ์ธ๋ฑ์ค๋ 2
์ง๋ง indexOf
๋ก ์ฐพ์ ์ธ๋ฑ์ค๋ 0์ด๋ฏ๋ก false
๋ฐํ. ์ด ์์
์ ๋ฐ๋ณตํ๋ฉด์ ์ค๋ณต ์์๋ฅผ ์ ๊ฑฐํ๋ค.
const arr = ["A", "B", "A", "D", "B", "F"];
const deDuplicated = arr.filter((el, idx) => arr.indexOf(el) === idx);
// ์ค๋ณต๊ฐ๋ง ๋ฐฐ์ด์ ๋ด๊ณ ์ถ๋ค๋ฉด arr.indexOf(el) !== idx
console.log(deDuplicated); // [ 'A', 'B', 'D', 'F' ]
๋ฐฉ๋ฒ 3 — forEach / includes ์ฌ์ฉ
includes
๋ ์ธ์์ ์
๋ ฅํ ์์๊ฐ ๋ฐฐ์ด์ ์๋์ง ํ์ธํ ํ Boolean ๊ฐ์ ๋ฐํํ๋ค. ์ด๋ฅผ ํ์ฉํด for
๋ฌธ์ด๋ forEach
๋ฑ์ ์ฌ์ฉํ์ฌ ์ค๋ณต ์์๋ฅผ ์ ๊ฑฐํ ์ ์๋ค.
const arr = ["A", "B", "A", "D", "B", "F"];
const deDuplicated = [];
arr.forEach((el) => {
if (deDuplicated.includes(el) === false) {
deDuplicated.push(el);
}
});
console.log(deDuplicated); // [ 'A', 'B', 'D', 'F' ]
๋ฐฉ๋ฒ 4 — reduce / includes ์ฌ์ฉ
`includes`, `indexOf`๋ ๋ฐฐ์ด๋ฟ๋ง ์๋๋ผ ์ดํฐ๋ฌ๋ธ์ธ ๋ฌธ์์ด๋ ๊ฒ์ฌํ ์ ์๋ค.
reduce์์ ์ด๊ธฐ๊ฐ์ ์ง์ ํ์ง ์์ผ๋ฉด ์ฒซ๋ฒ์งธ ์์๊ฐ ๋์ ๊ฐ(acc)๊ฐ ๋๋ค. ๋ฐ๋ผ์ ์ฒซ๋ฒ์งธ ์์๋ฅผ ์ํํ ๋ 'A'
๊ฐ unique(๋์ ๊ฐ) ๊ฐ์ด ๋๋ค. 2๋ฒ์งธ ์ํ์์ if ๋ฌธ์ ํต๊ณผํ์ง ๋ชปํ๊ณ ['A', 'B']
๊ฐ unique ๊ฐ์ด ๋๋ค. 3๋ฒ์งธ ์ํ์์ unique์ ์ํํ๋ ์์๊ฐ ์์ผ๋ฏ๋ก if๋ฌธ ์กฐ๊ฑด ํต๊ณผํ์ฌ ๋์ ๊ฐ ๊ทธ๋๋ก ๋ฆฌํด. ๋ค์ ์์ ์ํํ๋ฉฐ ๋ฐ๋ณต...
const arr = ["A", "B", "A", "D", "B", "F"];
const deDuplicated = arr.reduce((unique, item) => {
if (unique.includes(item)) {
return unique;
}
return [...unique, item];
});
console.log(deDuplicated); // [ 'A', 'B', 'D', 'F' ]
console.time ํ ์คํธ
`console.time('ํ์ด๋จธ์ด๋ฆ')`, `console.timeEnd('ํ์ด๋จธ์ด๋ฆ')`๋ก ์ฝ๋ ์ํ์๊ฐ์ ํ์ธํ ์ ์๋ค. ํ๋ผ๋ฏธํฐ์ ํ์ด๋จธ์ ์ด๋ฆ์ ์ ๋ ฅํ๋ฉฐ, time๊ณผ timeEnd ์ด๋ฆ์ด ๊ฐ์์ผ ํ๋ค.
๋ ํผ๋ฐ์ค
How to Remove Array Duplicates in ES6
๊ธ ์์ ์ฌํญ์ ๋ ธ์ ํ์ด์ง์ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ๋ฐ์๋ฉ๋๋ค. ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์ธ์
'๐ช Programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] console.log ์ฝ์ ๋ก๊ทธ ๋ ์ ์ฌ์ฉํ๊ธฐ (0) | 2024.04.25 |
---|---|
[React] ๋ฆฌ์กํธ์์ SVG ์ฌ์ฉ๋ฒ (0) | 2024.04.25 |
[HTML/CSS] CSS ํ์ ์ ๋๋ฉ์ด์ ๋ง๋ค๊ธฐ (0) | 2024.04.25 |
[HTML/CSS] ์์ดํฐ ์ฌํ๋ฆฌ์์ ์ ๋ ฅ์ฐฝ ์๋ํ๋ ๋ฐฉ์ง (0) | 2024.04.25 |
[HTML/CSS] ์ค๋ฐ๊ฟ(๊ฐํ๋ฌธ์) ํ์ / ๋์น๋ ํ ์คํธ ์๋ต ๊ธฐํธ ํ์ ๋ฐฉ๋ฒ (0) | 2024.04.25 |
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[JS] console.log ์ฝ์ ๋ก๊ทธ ๋ ์ ์ฌ์ฉํ๊ธฐ
[JS] console.log ์ฝ์ ๋ก๊ทธ ๋ ์ ์ฌ์ฉํ๊ธฐ
2024.04.25 -
[React] ๋ฆฌ์กํธ์์ SVG ์ฌ์ฉ๋ฒ
[React] ๋ฆฌ์กํธ์์ SVG ์ฌ์ฉ๋ฒ
2024.04.25 -
[HTML/CSS] CSS ํ์ ์ ๋๋ฉ์ด์ ๋ง๋ค๊ธฐ
[HTML/CSS] CSS ํ์ ์ ๋๋ฉ์ด์ ๋ง๋ค๊ธฐ
2024.04.25 -
[HTML/CSS] ์์ดํฐ ์ฌํ๋ฆฌ์์ ์ ๋ ฅ์ฐฝ ์๋ํ๋ ๋ฐฉ์ง
[HTML/CSS] ์์ดํฐ ์ฌํ๋ฆฌ์์ ์ ๋ ฅ์ฐฝ ์๋ํ๋ ๋ฐฉ์ง
2024.04.25