码迷,mamicode.com
首页 > 编程语言 > 详细

数组去重的几种实现方法。

时间:2015-09-08 21:56:36      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:

传统的去重思路大致如下。

  声明一个新的数组,在把旧的数组依次往新的数组里面push,如果遇到新数组已有的对象,就不push.

var arr =[1,3,3,3,5,6,6,7,8,1,5,9,5];
var newArr = [];
//先声明一个对比的方法
function findInArr(arr,n){
      for(var i=0;i<arr.length;i++){
            if(arr[i]==n)return true;//找到相似的返回true
      }  
    return false;//遍历完没有找到相似的返回 false
}    

for(var i=0;i<arr.length;i++){
    if(!findInArr(newArr,arr[i])){
          newArr.push(arr[i])  
    }
}

console.log(newArr)//返回去重后的数组

另一种解决的思路是数组集合里面每次比对两个邻近对象,后一个和前一个相同,就slice掉后一个。

var arr = [23,3,43,4,4,5,5,6,6,6,6,23];
// 23,3,4,5,6


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--;//去重后后退一位再继续遍历
        }
    }
}
console.log(arr);//返回去重后的数组

 

上述两种方法都是进行了两次loop,在处理较大的数据时运行效率就比较低下了。

下一种方法效率应该会更高一些,只进行了一次loop;

var arr = [23,3,43,4,4,5,5,6,6,6,6,23];
//思路如下,先对数组进行排序,升序或者降序都可以
arr.sort(function(n1,n2){
   return n1-n2; 
});

for(var i = 0 ;i<arr.length;i++){
     if(arr[i]==arr[i+1]){
          arr.slice(i+1,1);
          i--;     
     }  
}
console.log(arr);

数组去重应该还有蛮多的方法,以前用过循环对象字面量赋值的方法。下次有时间,在补上了。

 

数组去重的几种实现方法。

标签:

原文地址:http://www.cnblogs.com/vidy/p/4792871.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!