js数组对象去重方法

65 阅读1分钟

1. es5新建数据双重循环

let arr = [
  { name: 'a', id: 1 },
  { name: 'a', id: 2 },
  { name: 'b', id: 3 },
  { name: 'c', id: 4 },
  { name: 'c', id: 5 },
  { name: 'b', id: 6 },
  { name: 'd', id: 7 }
]
let temp = []
function change() {
  arr.forEach(function (a) {
    let check = temp.every(function (b) {
      return a.name !== b.name
    })
    check ? temp.push(a) : ''
  })
  return console.log(temp)
}
change()

2.es6的Map()

let arr = [
  { name: 'a', id: 1 },
  { name: 'a', id: 2 },
  { name: 'b', id: 3 },
  { name: 'c', id: 4 },
  { name: 'c', id: 5 },
  { name: 'b', id: 6 },
  { name: 'd', id: 7 }
]
function change() {
  let map = new Map()
  for (let item of arr) {
    if (!map.has(item.name)) {
      map.set(item.name, item)
    }
  }
  return [...map.values()]
}
let newArr = change()
console.log(newArr)

屏幕截图 2023-07-10 174230.png

3.es5,对象法去重

let arr = [
  { name: 'a', id: 1 },
  { name: 'a', id: 2 },
  { name: 'b', id: 3 },
  { name: 'c', id: 4 },
  { name: 'c', id: 5 },
  { name: 'b', id: 6 },
  { name: 'd', id: 7 }
]
let obj = {}
function change() {
  arr = arr.reduce(function (a, b) {
    obj[b.name] ? ' ' : (obj[b.name] = true && a.push(b))
    return a
  }, [])
  return arr
}
let newArr = change()
console.log(newArr)