그냥 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?)
반응형