主题
js对象中的某一个字段去重的三种方法
第一种
javascript
let arr = [
{ name: "Tom", age: 18 },
{ name: "Jack", age: 20 },
{ name: "Tom", age: 22 },
];
let map = new Map();
let result = [];
for (let i = 0; i < arr.length; i++) {
let key = arr[i].name;
if (!map.has(key)) {
map.set(key, 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: 22 },
];
let result = arr.filter((item, index, arr) => {
let flag = true;
for (let i = 0; i < index; i++) {
if (arr[i].name === item.name) {
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: 22 },
];
let result = arr.reduce((prev, curr) => {
let flag = prev.some((item) => item.name === curr.name);
if (!flag) {
prev.push(curr);
}
return prev;
}, []);
console.log(result); // [{name: 'Tom', age: 18}, {name: 'Jack', age: 20}]