数组对象根据对象中指定的属性去重
小于 1 分钟约 193 字
只有对象重复排重比较符合实际业务,毕竟后端的数据都是数组对象,业务很可能会出现根据 ID 来排重
const obj = [
{
name: 'frank',
age: 123,
},
{
name: 'chang',
age: 124,
},
{
name: 'chang',
age: 123,
},
]
// 使用filter和Map
function uniqueFunc(arr, uniId) {
const res = new Map()
return arr.filter((item) => !res.has(item[uniId]) && res.set(item[uniId], 1))
}
// 使用reduce
function uniqueFunc2(arr, uniId) {
let hash = {}
return arr.reduce((accum, item) => {
if (!hash[item[uniId]]) {
hash[item[uniId]] = true
accum.push(item)
}
return accum
}, [])
}
// 使用for循环
function uniqueFunc3(arr, uniId) {
let obj = {}
let tempArr = []
for (var i = 0; i < arr.length; i++) {
if (!obj[arr[i][uniId]]) {
tempArr.push(arr[i])
obj[arr[i][uniId]] = true
}
}
return tempArr
}
const arr2 = uniqueFunc2(obj, 'age')
console.log(arr2)