[javascript] 객체의 속성 값을 기준으로 중복 제거하기
JavaScript에서 객체의 속성 값들을 기준으로 중복된 값을 제거하는 방법에 대해 알아보겠습니다.
문제 상황
다음과 같은 객체가 있다고 가정해봅시다.
let users = [
{
name: 'John',
age: 20
},
{
name: 'Jane',
age: 30
},
{
name: 'John',
age: 25
},
{
name: 'Jane',
age: 30
}
];
위 객체에서 name
속성 값을 기준으로 중복된 객체를 제거하고 싶다고 가정해봅시다.
해결 방법
중복된 값을 제거하기 위해서는 다음과 같은 단계를 따를 수 있습니다.
- 중복을 제거할 새로운 배열을 생성합니다.
- 기존 배열을 순회하면서 중복 여부를 검사합니다.
- 중복되지 않은 객체라면 새로운 배열에 추가합니다.
- 새로운 배열을 반환합니다.
이를 코드로 구현하면 아래와 같습니다.
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에서 객체의 속성 값을 기준으로 중복을 제거하는 방법을 알아보았습니다. 위의 코드를 활용하여 중복 제거를 쉽게 구현할 수 있습니다.