天天看點

數組對象之根據特定字段去重

  • 需求: 數組對象去重
const arr = [
  { id: 1, name: 'aa', age: 16 },
  { id: 1, name: 'aa', age: 16 },
  { id: 3, name: 'cc', age: 20 },
  { id: 3, name: 'cc', age: 20 },
  { id: 2, name: 'bb', age: 18 },
  { id: 1, name: 'aa', age: 16 },
]
// 方法一
const newArr = arr.filter((ele, i, self) => {
  const index = self.findIndex(item => {
    return item.id === ele.id
  })
  return index === i
})
console.log(newArr)
// 方法二
function unique(arr) {
  const res = new Map();
  return arr.filter((a) => !res.has(a.id) && res.set(a.id, 1))
}
const newArr = unique(arr)
console.log(newArr)
           
  • 列印結果
    數組對象之根據特定字段去重
  • 項目實戰:點選“全選目前頁”時,過濾掉已選擇的資料
onSelectAll () {
  const arr = this.selectedList.concat(this.goodsData)
  const myMap = new Map()
  const res = arr.filter((a) => !myMap.has(a.id) && myMap.set(a.id, 1))
  this.selectedList = res
}
           
數組對象之根據特定字段去重
js