原生JavaScript数组去重的方法总结
1.排序法数组去重
只能处理同一类型的数组,并且还需要单独处理NaN
let arr = [1,2,3,1,2,3];
let newArr = [];
arr.sort(function(a,b){
return a-b;
})
for(let i=0; i<arr.length; i++){
if(arr[i] != arr[i+1]){
newArr[newArr.length] = arr[i];
}
}
console.log(newArr)
2.indexOf法数组去重
需要单独处理元素为NaN
let arr = [1,2,3,1,2,3];
let newArr = [];
for(let i=0; i<arr.length; i++){
if(newArr.indexOf(arr[i]) === -1){
newArr[newArr.length] = arr[i];
}
}
console.log(newArr)
3.对象法数组去重
无法识别字符串和数字类型
let arr = [1,2,3,1,2,3,"1","2","3"];
let newArr = [];
let obj = {};
for(let i=0; i<arr.length; i++){
if(obj[arr[i]] === undefined){
newArr[newArr.length] = arr[i];
obj[arr[i]] = 1;
}
}
console.log(newArr)
4.开关法数组去重
需要单独处理NaN
let arr = [1,2,3,1,2,3];
let newArr = [];
for(let i=0; i<arr.length; i++){
let isOk = true;
for(let j=0; j<arr.length; j++){
if(newArr[j] === arr[i]){
isOk = false;
break;
}
}
if(isOk){
newArr[newArr.length] = arr[i];
}
}
console.log(newArr)
5.set法数组去重
1.一行代码即可实现数组去重; 2.不用单独处理NaN;
let newArr = [...new Set([1,2,3,1,2,3])];
console.log(newArr)
在平时的工作中,比较常用的也就是set
这种方式,简单又快捷,但是也不乏会用上别的几种方式,所以在繁忙之余总结了一下这几种原生js数组去重的方法,希望可以帮助到各位同学!有疑问也可以留言和我交流,欢迎大家给我指错。