数组去重

利用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

原文地址:https://www.cnblogs.com/it-snail/p/3860861.html