数组去重的方法

1.双for循环形式、splice

思路:将数组中的值一个个的比较,重复的就删掉

function remove(array){

  for(var i=array.length-1; i>=1; i--){

              for(var j=i-1; j>=0; j--){

                      if(array[j]==array[i])

                            array.splice(j,1);  

                   }

              }

        return array;

 }

a=[1,1,2,2,2,3,4,5];

remove(a);  // [1,2,3,4,5]

2.indeOf、push

思路:设置一个新数组,根据indexOf筛选原数组,只要新数组中没有的,就push到新数组中

function remove(array){

    var newArray=[];

          for(var i=0; i<array.length; i++){

                if(newArray.indexOf(array[i]==-1)){

                            newArray.push(array[i]);

                    }

                 }

              return newArray; 

       }

    a=[1,1,2,3,3,4];

   remove(a);   // [1,2,3,4]

3.    先排序再去重

思路:先将原数组排序,再与相邻的进行比较,如果不同则存入新数组

funtion unique(arr){

     var arr2=arr.sort();

     var res=[arr2[0]];

      for(var i=1; i<arr2.length;i++){

       if(arr2[i]!==res[res.length-1]){

               res.push(arr2[i]);

        }

   }

  return res;

}

 4.es6 Set、Array.from方法

思路:

     1.Set函数可以接受一个数组(或者类似数组的对象)作为参数,用来初始化,其成员的值都是唯一的,没有重复的值。

     2.Array.from()方法可以将类数组对象和可遍历的对象转化为真正的数组。

     function remove(a){

        return Array.from(new Set(a));

}

         a=[1,2,3,3,3,2,4,5,5];

         remove(a); //[1,2,3,4,5]

 

posted on 2018-03-11 18:12  向往回得来  阅读(269)  评论(0编辑  收藏  举报

导航