数组去重的四种方法

99封情书 提交于 2020-01-13 22:05:08
  • 方法一:先给数组排序,循环比较前后两个是否相等,如果相等就删除索引是i的这个,然后i--

      <script>    
                  var arr = ['a', 'd', 'f', 'f', 's', 'f', 'a', 'd', 'f', 'f', 's', 'f','g'];
                  function norepeat(arr){
                  arr.sort();
                  //先排序让大概相同的在一个位置,这里为什么说是大概相同 是因为sort排序是把元素当字                  符串排序的 它和可能排成 1 1 10 11 2 20 3 
                  for(var i = 0; i < arr.length-1;i++){
                  //还是两两比较 一样删除后面的
                      if(arr[i]==arr[i+1]){
                          arr.splice(i,1);
                          //i-- 和j--同理
                          i--;
                      }
                  }
                  return arr;
              }
              norepeat(arr);
      </script>
  • 方法二 用一个空数组去存首次出现(indexOf)的元素

      <script>    
                  var arr = ['a', 'd', 'f', 'f', 's', 'f', 'a', 'd', 'f', 'f', 's', 'f','g'];
                  function noRepeat2(arr){
          var newArr = [];
          for(var i = 0; i < arr.length; i++){
             if(newArr.indexOf(arr[i]) == -1){//newArr中没有该元素就把该元素放到新数组中去
                    newArr.push(arr[i]);
               }
          }
          return newArr;
      }
          console.log(noRepeat2(arr));
      </script>
  • 方法三 循环比较如果相等的让后面的元素值为0 最后在输出的时候删除为0的

      <script>    
                  var arr = ['a', 'd', 'f', 'f', 's', 'f', 'a', 'd', 'f', 'f', 's', 'f','g'];
              var newArr = [];
      //控制外循环
      for(var i=0; i<arr.length-1;i++){
          //内存循环 只比较后面的
          for(j=i+1;j<arr.length;j++){
              //如果相等就让其值等于0
              if(arr[i]==arr[j]){
                  arr[j]=0;
              }
          }
          //去除值为0的
          if(arr[i]==0){
              continue;
          }else{
              //放入新的数组
              newArr.push(arr[i]);
              }
          }   
      </script>
  • 方法四:正则表达式去重

      <script>    
              var arr = ['a', 'd', 'f', 'f', 's', 'f', 'a', 'd', 'f', 'f', 's', 'f','g'];
          var str = arr.sort().join('');//先把所有相同元素放在一起
          console.log(str);//aaddffffffgss
          var newStr = str.replace(/(.).*\1/g,"$1");
          console.log(newStr);//adfgs 
      </script>
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!