常见数组去重的方法
- es6的set方法
function unique(arr) {
return Array.from(new Set(arr))
}
- 新建一个空的结果数组,for 循环原数组,判断结果数组是否存在当前元素,如果有相同的值则跳过,不相同则push进数组。
function unique(arr) {
var newArr = [];
for(var i = 0;i < arr.length;i++){
if(newArr.indedxof(arr[i]) === -1){
newArr.push(arr[i])
}
}
return newArr
}
- 利用for嵌套for,然后splice去重
function unique(arr){
for(var i=0;i<arr.length;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i]==arr[j]){
arr.splice(j,1);
j--;
}
}
}
return arr;
}
- 对象数组去重
const objArr = [{
name: '李四'
},{
name: '张三'
},{
name: '李梦'
},{
name: '张三'
},{
name: '李四'
}]
const obj = {}
const newObjArr = objArr.reduce((prev, curr)=>{
obj[curr.name] ? true : obj[curr.name] = true && prev.push(curr);
return prev
}, [])
console.log(newObjArr)
uniqueKey(arr:Array<any>,key:any){
let hash = {};
return arr = arr.reduce((item, next)=> {
hash[next.key] ? '' : hash[next.key] = true && item.push(next);
return item;
}, []);
}