js数组去重的几种方式

1、使用新数组,通过indexof判断

function noRepeat(arr){
      var newarr=[];
      for(var i=0;i<arr.length;i++){
          if(newarr.indexOf(arr[i])>=0){

          }else {
              newarr.push(arr[i]);
          }
      }
      return newarr;
  }

2、通过对象的属性:

 function normalize(arr) {
      if (arr && Array.isArray(arr)) {
          var i, len, map = {};
          for (i = arr.length; i >= 0; --i) {
              if (arr[i] in map) {
      arr.splice(i, 1);
  } else {
      map[arr[i]] = true;
  }
  }
  }
  return arr;
  }

3、嵌套两个for循环

 function noRepeat(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;
  }

4、对数组先进行排序,再进行对比

 function noRepeat(arr){
      arr.sort();
     var temp = arr[0];
     for(var i=1;i<arr.length;i++){
         if(arr[i]==temp){
             arr.splice(i,1);
             i--;
         }else{
             temp=arr[i];
         }
     }
     return arr;
  }

5、通过indexof进行下标对比

  function noRepeat(arr){
      for(var i = 0;i<arr.length;i++){
          if(arr.indexOf(arr[i])==i){

          }else{
              arr.splice(i,1);
              i--;
          }
      }
      return arr;
  }

6、通过filter

function noRepeat(arr){
      var r = arr.filter(function (val,index,item) {
          return item.indexOf(val) == index;
      })
      return r;
  }

猜你喜欢

转载自blog.csdn.net/weixin_42203183/article/details/89604923