工具函数
/**
*数组去重
*arr需要去重的数组
*key通过某个key去重 没有则为每一项为key
*/
function duplicateRemoval(arr,key) {
var obj = {}
var newArr = []
for (var i = 0; i < arr.length; i++) {
var itemKey = key ? arr[i][key] : arr[i]
if (!obj['s' + itemKey]){
newArr.push(arr[i])
obj['s' + itemKey] = true
}
}
return newArr
}
- 纯数组去重
var arr = [1,3,4,2,3,4,3,4]
var newArr2 = duplicateRemoval(arr)
console.log(newArr2)
结果
- 对象数组去重
var objArr = [
{
id: 16,
speak: 'hello16'
},
{
id: 21,
speak: 'hello21'
},{
id: 16,
speak: 'hello16'
},
{
id: 18,
speak: 'hello18'
},
{
id: 18,
speak: 'hello18'
},
{
id: 21,
speak: 'hello21'
},
{
id: 18,
speak: 'hello18'
}
]
var newArr = duplicateRemoval(objArr, 'id')
console.log(newArr)
结果
还有很多数组去重的方法,以上是我自己常用的方法,个人觉得这种方法效率比indexOf判断,循环嵌套啥的性能高