-
javascript array에서 중복되는 객체 제거하기NodeJS 2021. 12. 14. 02:08728x90
중복 제거 하기
단순한 숫자나 문자의 중복 제거는 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); });
위의 방식이 일반적으로 많이 쓰이는 방식 입니다.
참고 자료
728x90'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