/**
* 数组对象去重
* @param {Array} arr 需要去重的对象数组
* @param {string} key 判断重复的关键字, 如果是基本数据类型,则不传
* */
function arrNoRepeat(arr, key) {
if(!key){
return [...new Set(arr)]
}
let obj = {}
arr = arr.reduce((item, next) => {
obj[next[key]] ? '' : obj[next[key]] = true && item.push(next)
return item
}, [])
return arr
}
测试代码(基本数据类型也可以)
/**
* 数组对象去重
* @param {Array} arr 需要去重的对象数组
* @param {string} arr 判断重复的关键字, 如果是基本数据类型,则不传
* */
function arrNoRepeat(arr, key) {
if(!key){
return [...new Set(arr)]
}
let obj = {}
arr = arr.reduce((item, next) => {
obj[next[key]] ? '' : obj[next[key]] = true && item.push(next)
return item
}, [])
return arr
}
// 需要去重的数组
let myArr = [
{
id: 1,
name: '小明'
}, {
id: 2,
name: '小红'
}, {
id: 1,
name: '小明'
},
]
console.log(arrNoRepeat(myArr, 'id'))
console.log(arrNoRepeat(myArr, 'name'))
let arr = [1,2,3,4,1]
console.log(arrNoRepeat(arr))