언어 Language/자바스크립트 Javascript

Javascript set을 사용해서 배열 안에 있는 객체의 중복도 없앨 수 있을까?

Tap to restart 2020. 11. 9. 10:00
반응형

그냥 Set을 사용해서는 안 된다.

 

배열 안에 객체가 없는 경우에는 중복을 없앨 수 있지만,

배열 안에 객체가 있는 경우에는 중복을 없앨 수 있다.

따로 함수를 만들어줘야 한다.

 

let arr1 = ['a', 'a', 'b'];

let p1 = {name: 'Peter', age: 21};
let p2 = {name: 'James', age: 23};
let p3 = {name: 'James', age: 23};
let arr2 = [p1, p2, p3];

let set1 = new Set([...arr1]);
let set2 = new Set([...arr2]);

console.log("arr1:", arr1);
console.log("arr2:", arr2);
console.log("set1:", set1);
console.log("set2:", set2);

const getUniqueArrayByKey = function(data, key){
 return [...new Map(data.map(item => [item[key], item])).values()];
}
console.log("getUniqueArrayByKey:", getUniqueArrayByKey(arr2, 'name'));

 

 

 

(참고: Stackoverflow: How to get distinct values from an array of objects in JavaScript?)

 

반응형