728x90
중복 제거 하기
단순한 숫자나 문자의 중복 제거는 Set을 이용하면 간단하게 처리 할 수 있습니다.
const list = ['1', '2', '3', '2', 1,2,3, 1,2,3];
// Set 을 이용한 방식
[...new Set(list)]
// filter를 이용한 방식
list.filter((item, index) => list.indexOf(item) === index);
// 결과
[ '1', '2', '3', 1, 2, 3 ]
하지만, 객체의 중복제거의 경우는 조금 다른 방식으로 처리 해야 합니다.
# 중복 제거가 안됨
const list = [{a:1, b:2}, {a:2, b:1}, {a:1, b:2}];
list.filter((item, index) => list.indexOf(item) === index);
// 결과
[ { a: 1, b: 2 }, { a: 2, b: 1 }, { a: 1, b: 2 } ]
바로, JSON.stringify를 이용하는 방식입니다.
const list = [{a:1, b:2}, {a:2, b:1}, {a:1, b:2}];
const uniqueList = [...new Set(list.map(JSON.stringify))].map(JSON.parse);
// 결과
[ { a: 1, b: 2 }, { a: 2, b: 1 } ]
다른 방식으로 key 값을 기준으로 unique 객체를 추출한다면 다음과 같은 방식으로도 가능합니다.
// a의 값이 key 인경우
const list = [{a:1, b:2}, {a:2, b:1}, {a:1, b:2}];
list.filter((item, index) => {
const key = item.a;
return index === list.findIndex((e)=> e.a === key);
});
위의 방식이 일반적으로 많이 쓰이는 방식 입니다.
참고 자료
'NodeJS' 카테고리의 다른 글
nestjs에서 멀티 DB 설정 및 셋팅 (0) | 2022.10.28 |
---|---|
typescript 객체 생성 유틸 (0) | 2022.10.28 |
nestjs에서 passport + SAML 로그인시 오류 발생 처리 (0) | 2021.12.12 |
nestjs에서 jest를 이용한 End2End 테스트 케이스를 작성 (0) | 2021.07.23 |
NestJS에서는 기본적으로 jest 기반의 테스트 케이스를 제공합니다. (0) | 2021.07.15 |