배열 내 객체 프로퍼티 값 중에 중복으로 들어간 것을 제거하는 방법은 많이 사용됩니다. 중복을 제거하면서 카운트 하는 방법을 알아보겠습니다.
Lodash 설치
inline ad
설명에 앞서 Lodash CDN 은 https://www.jsdelivr.com/package/npm/lodash 이곳에서 확인할 수 있으며 아래 CDN 버전을 사용하셔도 됩니다.
<script src=”https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js”></script>
Lodash 를 이용한 배열 내 객체 id 값 중복제거, 카운트
lodash 라이브러리를 이용한 방법을 설명하겠습니다. lodash는 데이터를 정렬, 필터, 색인할 수 있게 도와주는 오픈소스로 배열 조작을 쉽고 간편하게 처리가 가능합니다. lodash에서 _.groupBy 와 _.map 을 사용하여 중복을 제거하고 카운트를 처리하였습니다.
const users = [ { id: '2001', user: 'barney', age: 36, active: true }, { id: '2001', user: 'barney', age: 36, active: false }, { id: '2001', user: 'barney', age: 36, active: false }, { id: '2002', user: 'fred', age: 30, active: false }, { id: '2002', user: 'fred', age: 30, active: false }, { id: '2002', user: 'fred', age: 30, active: true }, { id: '2003', user: 'travis', age: 34, active: false }, { id: '2004', user: 'travis', age: 34, active: false }, ]; const groupBy = _.groupBy(users, (item) => item.id) const result = _.map(groupBy, (group) => ({...group[0], count: group.length}) ) console.log(result)
중복제거
id 중복만 제거한다면 _.uniqBy 를 사용하여 간단하게 처리가 가능합니다.
_.uniqBy(users, 'id');