zoukankan      html  css  js  c++  java
  • js 数组去重常见的几种方式

    • 1.利用标记
    • var arr = [2,6,2,6,4,3,16];// arr = [2,6,4,3,16]
      function norepeat(arr){
      var res = [];
      for(var i=0;i<arr.length;i++){
      var flag = true;
      for(var j=0;j<res.length;j++){
      if(arr[i]==res[j]){
      flag = false;//将要推入新数组的数组元素 在新数组中有重复
                  }
              }
              if(flag){
              res.push(arr[i]);
              }
                  }
              return res;
              }
          console.log(norepeat(arr));
    • 2.indexOf()找对应的下标
    • function norepeat(arr){
          var newArr = [];
          for(var i=0;i<arr.length;i++){
              if(newArr.indexOf(arr[i]) == -1){
                  newArr.push(arr[i]);
              }
          }
          return newArr;
      }
      var arr = [1,2,3,5,6,1,2,5];
      console.log(norepeat(arr));
    • 3.Es5迭代方法filter() +indexOf
    •   var arr = [1, 2, 3, 1, 2, 3, 5, 6, 4, 5];
              var newArr = arr.filter(function(value, index, array) {
                      console.log(value,index,array);
                      return arr.indexOf(value) == index;
                  })
                  alert(newArr);
    • 4.利用快速排序去重(比较麻烦的一种啦)
    •  1     function quickSort(arr) {
       2                 if(Array.isArray(arr)) {  //先判断是不是个数组
       3                     if(arr.length <= 1) {  //设置限定条件
       4                         return arr;
       5                     }
       6                     var left = [];
       7                     var right = [];
       8                     var midIndex = Math.floor(arr.length / 2);  //找中间索引
       9                     var midValue = arr.splice(midIndex, 1);     //找中间值
      10                     for(var j = 0; j < arr.length; j++) {
      11                         if(arr[j] < midValue) {
      12                             left.push(arr[j]);
      13                         }
      14                         if(arr[j] > midValue){
      15                             right.push(arr[j]);
      16                         }
      17                     }
      18                     return quickSort(left).concat(midValue, quickSort(right));  //递归直至数组长度为1
      19 
      20                 } else {
      21                     alert('请传个数组');
      22                 }
      23             }
      24             var arr1 = [6, 2, 5, 7, 21, 1,2,5];
      25             console.log(quickSort(arr1));        
  • 相关阅读:
    sb世博
    seo 工具集锦
    各种Windows 操作系统中的 .NET Framework 支持
    httplib2模拟登陆
    python tips
    B2C电子商务能否通吃线上线下?
    复制镜像
    Scale Stack vs node.js vs Twisted vs Eventlet
    pool=eventlet.GreenPool(20)
    nginx最新部署
  • 原文地址:https://www.cnblogs.com/aloehui/p/7746965.html
Copyright © 2011-2022 走看看