방법 1 — Set 이용 ⭐️


<aside> 💡 Set을 이용해 중복 요소를 제거하는 방식의 성능이 가장 좋다

</aside>

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 관련 더 자세한 내용은 [TIL] Map / Set 자료구조 노트 참고.

방법 2 — filter / indexOf 이용


<aside> 💡 중복값만 따로 배열에 담고 싶을 때 유용

</aside>

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 사용