添加至Array对象原型链上返回,实现去重数组并且不改变原数组。
// 使用set对象去重
Array.prototype.uniqueSet = function () {
return [...new Set(this)]
}
// 使用filter去重
Array.prototype.uniqueFilter = function () {
let a = {}
return this.filter((i) => {
if (!a[i]) {
a[i] = true
return true
}
})
}
// 使用indexOf去重
Array.prototype.uniqueIndexOf = function(){
let result = [];
this.forEach(ele => {
if (result.indexOf(ele) == -1) {
result.push(ele)
}
})
return result;
}
可以做相应拓展,根据指定的属性值进行去重 (适用于对数组内对象的制定属性进行去重)
// 使用filter 根据传入属性名去重
Array.prototype.uniqueObjectAttr = function (attr) {
let a = {}
return this.filter((i) => {
if (!a[i[attr]]) {
a[i[attr]] = true
return true
}
})
}