Map()를 활용하여 Object로 구성된 배열에서 중복 제거하기

이전의 포스트에서 중복된 Object로 구성된 배열에서 ES6의 filter()를 사용하여 중복을 제거하였었다.  

 

Object로 구성된 배열에서 중복 제거하기

User [{"id": 1, "name": "testman", "description": "For Test" ... }, ....]와 같이 구성되어 있는 다수의 리턴 값에서 중복을 제거할 일이 있었다. 원래는 Set을 활용하여 중복 요소를 제거하려 하였지만, 리턴..

eight20.tistory.com

User [{"id": 1, "name": "testman", "description": "For Test" ... }, ....]와 같이 구성되어 있는 다수의 리턴 값에서 중복을 제거할 때, 아래와 같이 ES6의 Map( )를 사용하여 중복을 제거하였다. 

// 기본 중복된 User 리스트
const User = [{"id": 1, "name": "testman", "description": "For Test" ... }, ....]; 

// 중복 제거된 User 리스트
const removeDupUser = [...new Map(User.map(item => [item[key], item])).values()];

Map()을 통해 중복을 제거하는 원리는 다음과 같다.

  1. map의 입력으로 배열이 다시 매핑한다.
  2. user.map(item => [item[key], item]);는 array의 각 item이 2개의 요소가 있는 다른 배열로 변환됨을 의미한다.
  3. 선택된 key를 첫 번째 요소로, 전체 items를 두 번째 요소로 사용한다.
  4. 해당 배열을 Map 생성자에 전달하면, Map은 중복 키 값을 제거하고 동일한 키의 마지막에 삽입된 값만 유지한다.