主题
js三种对象去重的方法
第一种
javascript
let arr = [
{ name: "Tom", age: 18 },
{ name: "Jack", age: 20 },
{ name: "Tom", age: 18 },
];
let map = new Map();
let result = [];
for (let i = 0; i < arr.length; i++) {
if (!map.has(JSON.stringify(arr[i]))) {
map.set(JSON.stringify(arr[i]), true);
result.push(arr[i]);
}
}
console.log(result); // [{name: 'Tom', age: 18}, {name: 'Jack', age: 20}]第二种
javascript
let arr = [
{ name: "Tom", age: 18 },
{ name: "Jack", age: 20 },
{ name: "Tom", age: 18 },
];
let result = arr.filter((item, index, arr) => {
let flag = true;
for (let i = 0; i < index; i++) {
if (JSON.stringify(arr[i]) === JSON.stringify(item)) {
flag = false;
break;
}
}
return flag;
});
console.log(result); // [{name: 'Tom', age: 18}, {name: 'Jack', age: 20}]第三种
javascript
let arr = [
{ name: "Tom", age: 18 },
{ name: "Jack", age: 20 },
{ name: "Tom", age: 18 },
];
let result = arr.reduce((prev, curr) => {
if (!prev.some((item) => JSON.stringify(item) === JSON.stringify(curr))) {
prev.push(curr);
}
return prev;
}, []);
console.log(result); // [{name: 'Tom', age: 18}, {name: 'Jack', age: 20}]