[JavaScript] 배열에서 중복값 제거하는 법

codeing999·2022년 7월 17일
0

JavaScript

목록 보기
3/24

링크텍스트
링크텍스트

이 두사이트에 굉장히 잘 정리되어 있다 여기엔 아이디어들만 정리.

const array = ['C', 'A', 'B', 'A', 'C', 'D', 'C', 'C', 'E', 'D'];
console.log(array);	// ['C', 'A', 'B', 'A', 'C', 'D', 'C', 'C', 'E', 'D']

let result1 = [...new Set(array)];
console.log(result1);	// ['C', 'A', 'B', 'D', 'E']

let result2 = array.filter((v, i) => array.indexOf(v) === i);
console.log(result2);	// ['C', 'A', 'B', 'D', 'E']

let result3 = array.reduce((ac, v) => ac.includes(v) ? ac : [...ac, v], []);
console.log(result3);	// ['C', 'A', 'B', 'D', 'E']

let result4 = [];
for(v of array) {
  if (!result4.includes(v)) result4.push(v);
}
console.log(result4);	// ['C', 'A', 'B', 'D', 'E']

1. set으로 만들고 나서 다시 배열로 되돌린다.

2. indexOf()를 사용하는 방법.

indexOf는 배열에서 해당값을 갖고 있는 가장 첫번째 인덱스를 리턴하는데 이를 filter() 함수와 같이 써서 지금 값의 인덱스가 indexOf()에서 리턴한 인덱스랑 같지 않다면 처음 나온 값이 아니다라고 걸러내어 처음 나온 값들만 새 배열에 넣어주는 방법.

3. include()를 사용하는 방법

새로 만든 빈 배열에 값을 넣어가는데, 넣을 때마다 그 새 배열에 이미 포함된 값인지 비교해보고 없을 때에만 넣는 방식.
이게 제일 직관적인 것 같긴하다.
이 중에서도 include()를 그냥 for문과 쓰는 방법이 있고
reduce()와 쓰는 방법이 소개되어 있는데.
reduce()를 쓴다는 거는 for문에서 쓸 때 결과를 누적시킬 새 빈 배열을 만들어서 넣어주는 과정을 reduce()에 포함시켜 축약한 형태라 볼 수 있겠다.

let result = array.reduce((ac, v) => ac.includes(v) ? ac : [...ac, v], []);

이와 같이 스프레드와 같이 썼구나.

4. Object.fromEntries(), map(), Object.keys() 사용하여 배열에서 중복 제거하는 방법

이거도 set으로 변환시켜서 중복제거한 것과 비슷한 맥락이다.

profile
코딩 공부 ing..

0개의 댓글