Skip to content

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}]