数组去重个人总结的六种方式

1-1.利用ES6的Set函数

let arr=[1,2,3,4,5,3,5,6,2];
let a=new Set(arr);
let b=[...a];
console.log(b);//[1,2,3,4,5,6]

1-2.利用数组的过滤方式

let arr=[1,2,3,4,5,3,5,6,2];
let b= arr.filter((val,index,self)=>{
    return self.indexOf(val)===index;
});
console.log(b);//[1,2,3,4,5,6]

1-3.利用for循环去重

let arr=[1,2,3,4,5,3,5,6,2];
let b=[];
for(let i=0;i<arr.length;i++){
    if(b.indexOf(arr[i])<0){
        b.push(arr[i])
    }
}
console.log(b);//[ 1, 2, 3, 4, 5, 6 ]

1-4.利用双for循环去重

let arr=[1,2,3,4,5,3,5,6,2];
let b=[];
for(let i=0;i<arr.length;i++){
    let bool=true;
    if(i>0){
        for(let j=0;j<b.length;j++){
            if(b[j]===arr[i]){
              bool=false;
            }
        }
        if(bool){
            b.push(arr[i]);
        }
    }else {
        b.push(arr[i])
    }
}
console.log(b);//[ 1, 2, 3, 4, 5, 6 ]

1-5.先对原数组进行排序,在将原数组和去重数组最后一项比较

let arr=[1,2,3,4,5,3,5,6,2];
let b=[];
let arr1=arr.sort();
for(let i=0;i<arr1.length;i++){
    if(arr1[i]!==b[b.length-1]){
        b.push(arr1[i])
    }
}
console.log(b);//[ 1, 2, 3, 4, 5, 6 ]

1-6.创建空对象,将原数组每一次循环的值作为对象的属性,判断对象属性是否存在,不存在的放入去重数组

let arr=[1,2,3,4,5,3,5,6,2];
let b=[];
let c={};
for(let i=0;i<arr.length;i++){
   if(!c[arr[i]]){
       b.push(arr[i]);
       c[arr[i]]='hello'
   }
}
console.log(b);//[ 1, 2, 3, 4, 5, 6 ]

个人比较推荐1,2,6

posted @ 2018-01-06 01:02  爱编程的douyaer  阅读(303)  评论(0编辑  收藏  举报
Fork me on MaYun