자바스크립트 배열의 중복을 없애는 방법

이동규·2023년 12월 11일

JAVASCRIPT

목록 보기
18/21

1) Set을 사용한다.

const arr = ['A', 'B', 'C', 'A', 'B'];
const set = new Set(arr);
const newArr = [...set];
console.log(newArr);

Set을 Array로 변환 할 때

const newArray = Array.from(new Set(arr));

2) filter() , indexOf()를 이용하여 중복 제거

const arr = ['A', 'B', 'C', 'A', 'B'];
const newArr = arr.filter((element, index) => arr.indexOf(element) === index);
console.log(newArr);

Array.indexof(element)는 element 중 가장 낮은 인덱스를 리턴한다.
그런데 리턴한 인덱스와 filter의 콜백함수에 있는 파라미터에 있는 인덱스가 다르면 중복된 값이다.따라서 그것을 제외하고 새로운 배열을 생성한다.

3) reduce 메소드를 사용하여 중복을 없앤다.

reduce()는 배열 요소의 값들을 순차적으로 순회하면서 하나의 값을 만드는 함수이다.

const arr = ['A', 'B', 'C', 'A', 'B'];
const initialValue = []
const newArr = arr.reduce((prev, current) => prev.includes(current) ? prev : [...prev, current], initialValue);// 작동방식 초기값: [] , []빈배열이 'A'를 포함하지 않고 있으니까 A를 넣는다.current는 arr의 인덱스의 값이다.
console.log(newArr);

4) for 루프를 사용해 모든 데이터를 순회하여 중복을 제거한다.

const arr = ['A', 'B', 'C', 'A', 'B'];
const newarr = [];
arr.forEach((e,i)=>{
    if (!newarr.includes(e)) {
        newarr.push(e);
    }

});
console.log(newarr);

0개의 댓글