数组内元素为对象时做数组去重-笔记

115 阅读1分钟

有个数组[{name:a,age:20,count:5},{name:b,age:21,count:8},{name:a,age:20,count:9}],当name和age的值相等时为相同元素,做数组去重!

const arr = [
  { name: 'vue' },
  { name: 'raect' },
  { name: 'angluar' },
  { name: 'vue' },
  { name: 'vue' },
  { name: 'raect' },
  { name: 'angluar' },
]
let arr1 = arr.filter((v, index) => index === arr.findIndex(y => y.name === v.name))
console.log(arr1);

const arr2 = [
  { name: 'a', age: 20, count: 5 },
  { name: 'b', age: 21, count: 8 },
  { name: 'a', age: 20, count: 9 },
]
let arr3 = arr2.filter((v, index) => index === arr2.findIndex(y => y.name === v.name && y.age === v.age))
console.log(arr3);
// 输出
[ { name: 'vue' }, { name: 'raect' }, { name: 'angluar' } ]
[ { name: 'a', age: 20, count: 5 }, { name: 'b', age: 21, count: 8 } ]

此方法可以去除查到的第一个以外的重复元素,获取最后一个可以,先反转数组reverse(),再去重