Skip to content

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