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)

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)