各类数据格式的数组去重大法
之前看过许多数组去重的方法,但都写得比较笼统,只描述了去重方法,但其实方法也是要对着其数据格式对症下药。
1. 数组内元素去重例如[1,2,3,4,5,5,6,3,3,2,1]
这类最简易的数据的数据格式可以直接用ES6语法最为快速
const arr = [1,2,3,4,5,5,6,3,3,2,1];
let arr1 = [...new Set(arr)];
let arr2 = Array.from(new Set(arr));
console.log(arr1);//[ 1, 2, 3, 4, 5, 6 ]
console.log(arr2);//[ 1, 2, 3, 4, 5, 6 ]
2.数组内对象比较去重[{name:‘whh’,sex:‘women’},{name:‘hll’,sex:‘man’},{name:‘hll’,sex:‘man’},{name:‘zl’,sex:‘man’}]
这类是业务专用的数据格式
//将name重复的去掉
const arr = [{name:'whh',sex:'women'},{name:'hll',sex:'man'},{name:'hll',sex:'man'},{name:'zl',sex:'man'}];
//先排序(重要)
arr = arr.sort((a,b)=>{
if(a.name.toLowerCase()>b.name.toLowerCase()){
return 1;
}else{
return 1;
}
});
for(let i =0;i<arr.length;i++){
let dex = i+1;
if(dex<arr.length-1){
if(arr[i].name===arr[dex].name){
arr.splice(i,1);
i--;
}
}
}
console.log(arr);//[ { name: 'whh', sex: 'women' },{ name: 'hll', sex: 'man' },{ name: 'zl', sex: 'man' } ]
3.不同数组之间去掉相同的对象元素arr1[{name: ‘whh’, sex: ‘women’},{name:‘hll’,sex:‘man’}]、arr2[{name:‘hll’,sex:‘man’},{ name: ‘zl’, sex: ‘man’ }]
已知arr1和arr2都有name为hll的对象,去掉hll
const arr1 = [{name: 'whh', sex: 'women'},{name:'hll',sex:'man'}];
const arr2 = [{name:'hll',sex:'man'},{ name: 'zl', sex: 'man' }];
for(let i =0;i<arr1.length;i++){
for(let j =0;j<arr2.length;j++){
if(arr1[i].name===arr2[j].name){
arr1.splice(i,1);
arr2.splice(j,1);
}
}
}
console.log(arr1);//[{ name: 'whh', sex: 'women' }]
console.log(arr2);//[{ name: 'zl', sex: 'man' }]
持续补充…