zoukankan      html  css  js  c++  java
  • 数组去重

    利用javascript进行数组去重,调研了下面几种方法:

    1.遍历数组,删除已出现的元素

    var uniqueArrByDel = function(arr){
      for(var i = 0; i < arr.length-1; i++){
          var item = arr[i];
          for(var j = i +1; j < arr.length;j++){
             (item=== arr[j]) && (arr.splice(j,1)&&j--);
         }
     }  
    }    

    2.利用对象来删除元素

    var uniqueArrByObj = function(arr){
      var tempArr = [], obj = {};
      for(var i = 0; i < arr.length; i ++){
          var item = arr[i];
          if(!obj[item]){
           obj[item] = true;
           tempArr.push(item); 
          }
        }
          return tempArr;  
    }    

    3.利用数组原生方法filter

    var uniqueArrByFilter = function(arr){
      return arr.filter(function(elem, index, self){//elem当前元素 index当前索引 self数组
        return index == self.indexOf(elem);//数组原生方法filter中设置回调函数,回调函数返回true则不删除,返回false则删除元素          
        });  
    }

    动态生成100元素长的数组来测试上面三个方法,1和2的执行时间小于0ms,3的执行时间大于11ms,看来原生方法效率一般般啊

    参考:

    http://www.cnblogs.com/mackxu/p/array-unique.html

    http://blog.segmentfault.com/fishenal/1190000000418858

  • 相关阅读:
    如何增加按钮的点击间隔时间
    如何增加button的点击范围
    定时器Timer的使用
    NSCache
    GCD和NSOperation的区别
    NSOperation实现线程间通信
    NSOperation添加操作依赖和监听
    自定义NSOperation
    NSOperation的多线程
    单例的实现(完整版代码)
  • 原文地址:https://www.cnblogs.com/it-snail/p/3860861.html
Copyright © 2011-2022 走看看