数组去重的几大方法
1、reduce
var arr = [1,2,3,3,4,4,5,5,6];
var newArr = arr.reduce((prev,cur)=>{
if(!prev.includes(cur)){
return prev.concat(cur);
}else{
return prev;
}
},[]);
console.log(newArr);
2、set
var arr = [1,2,3,3,4,4,5,5,6,'true','false','true','a','a','a'];
console.log(new Set(arr));
3、indexOf
var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}];
function remove(arr){
for(var i = 0;i<arr.length;i++){
if(arr.indexOf(arr[i])!==-1){
arr.splice(i,1);
}
}
return arr
}
console.log(remove(arr));
4、sort
先给数组排序,然后检查第i项和第i+1项的值是否相等,如果相等就使用splice(i+1,1)删除第i+1项
var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}];
function remove(arr){
arr = arr.sort();
for(var i=0;i<arr.length;i++){
if(arr[i]===arr[i+1]){
arr.splice(i+1,1);
}
}
return arr;
}
console.log(remove(arr));
5、 includes
var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}];
function remove(arr){
for(var i=0;i<arr.length;i++){
if(arr.includes(arr[i])){
arr.splice(i,1);
}
}
return arr;
}
console.log(remove(arr));
6、filter
var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}];
var newArr = arr.filter((item,index)=>{
return arr.indexOf(item) === index;
});
console.log(newArr)
7、map
var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}];
var map = new Map();
var newArr = new Array();
for(var i =0;i<arr.length;i++){
if(map.has(arr[i])){
map.set(arr[i],true)
}else{
map.set(arr[i],false);
newArr.push(arr[i]);
}
}
console.log(newArr);
8、双重for循环
// for循环中嵌套for循环
var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}];
function remove(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;
}
console.log(remove(arr));