数组去重是业务开发中可能经常遇到的场景,本文总结了数据去重的几种实现思路。
1.借助Set
/**
* 使用Map
*
*/
const arr = [12,34,565,12,34,1,3,1]
// const newArr = [...new Set(arr)]
const newArr = Array.from(new Set(arr))
console.log('newArr',newArr);
案例效果:
2.常规操作
/**
* 简单实现
*/
const arr = [12,34,565,12,34,1,3,1]
const newArray = [];
arr.forEach(item => {
if(newArray.indexOf(item) === -1){
newArray.push(item)
}
});
console.log('newArray', newArray)
案例效果:
3.借助对象
/**
* 借助对象实现
*/
const arr = [12,34,565,12,34,1,3,1]
const obj = {};
for (let index = 0; index < arr.length; index++) {
const item = arr[index];
if(obj[item] === undefined){
obj[item] = item;
}else{
arr.splice(index, 1);
index--;
}
}
console.log('借助对象实现', arr);
案例效果:
4.排序并借助正则能力
/**
* 先排序 相邻比较
*/
const arr = [12,34,565,12,34,1,3,1]
const sortArr = arr.sort((a, b)=> a-b)
console.log('sortArr', sortArr);
const sortArrStr = sortArr.join('@') + '@';
console.log('sortArrStr', sortArrStr);
const reg = /(\d+@)\1*/g;
const newArr = [];
sortArrStr.replace(reg, (val, group)=>{
console.log('val', val);
console.log('group', group);
newArr.push(parseInt(group))
})
console.log('newArr', newArr);
实现效果:
5.利用filter和indexOf巧妙过滤
/**
* 利用filter, 设计很巧妙 时间复杂度也是O(n^2)
*/
const arr = [12,34,565,12,34,1,3,1]
const result = arr.filter((item, index)=>{
return arr.indexOf(item) === index;
})
console.log('result', result);
实现效果:
总结
本文总结了借助Set、常规操作、借助对象、排序并借助正则能力、filter等几种途径来实现数组去重。
如果对你有帮助,欢迎给作者点赞加关注哈哈~