[javascript] 객체의 속성 값을 기준으로 중복 제거하기

JavaScript에서 객체의 속성 값들을 기준으로 중복된 값을 제거하는 방법에 대해 알아보겠습니다.

문제 상황

다음과 같은 객체가 있다고 가정해봅시다.

let users = [
  {
    name: 'John',
    age: 20
  },
  {
    name: 'Jane',
    age: 30
  },
  {
    name: 'John',
    age: 25
  },
  {
    name: 'Jane',
    age: 30
  }
];

위 객체에서 name 속성 값을 기준으로 중복된 객체를 제거하고 싶다고 가정해봅시다.

해결 방법

중복된 값을 제거하기 위해서는 다음과 같은 단계를 따를 수 있습니다.

  1. 중복을 제거할 새로운 배열을 생성합니다.
  2. 기존 배열을 순회하면서 중복 여부를 검사합니다.
  3. 중복되지 않은 객체라면 새로운 배열에 추가합니다.
  4. 새로운 배열을 반환합니다.

이를 코드로 구현하면 아래와 같습니다.

function removeDuplicates(arr, key) {
  let result = [];
  let map = new Map();
  
  for (let obj of arr) {
    if (!map.has(obj[key])) {
      map.set(obj[key], true);
      result.push(obj);
    }
  }
  
  return result;
}

let uniqueUsers = removeDuplicates(users, 'name');
console.log(uniqueUsers);

위 코드에서 removeDuplicates 함수는 중복을 제거할 배열과 속성 이름을 매개변수로 받습니다. 맵을 이용하여 중복을 판단하고, 중복되지 않은 객체를 새로운 배열에 추가합니다.

결과

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

[
  {
    name: 'John',
    age: 20
  },
  {
    name: 'Jane',
    age: 30
  }
]

해당 코드를 통해 name 속성 값 기준으로 중복을 제거한 결과를 얻을 수 있습니다.

결론

JavaScript에서 객체의 속성 값을 기준으로 중복을 제거하는 방법을 알아보았습니다. 위의 코드를 활용하여 중복 제거를 쉽게 구현할 수 있습니다.