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

使用JavaScript进行数组去重——一种高效的算法

时间:2016-03-31 23:13:37      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:

  最近比较忙,没时间更新博客,等忙完这阵子会整理一篇使用AngularJS构建一个中型的单页面应用(SPA)的文章,尽情期待!先占个坑。

  数组去重的算法有很多种,以下是一种。

  思路如下:

  1. 定义一个空的对象obj;
  2. 循环数组arr,判断obj[arr[i]]是否为false,如果是则将该数组元素放到result中,并且将obj[arr[i]]置为true;
  3. obj[arr[0]]肯定为false,因为obj为空,arr[0]将被放到result中,并且obj[arr[0]]被置为true;
  4. 循环的过程中如果有哪个元素(比如第n个元素)和arr[0]相同,那么obj[arr[n]]将和obj[arr[0]]相同(都为true),因为key相同,value必定也相同。

  如此便可去重。

  代码如下:

 1 function unique(arr){
 2     var obj={};
 3     var result=[];
 4     for(var i=0;i<arr.length;i++){
 5         if(!obj[arr[i]]){
 6             result.push(arr[i]);
 7             obj[arr[i]]=true;
 8         }
 9     }
10     return result;
11 }
12 var array = [32,12,4,27,12,9,20,32,12,8,44,18];
13 console.log(unique(array));

 ---------------------------------------------------------------------------------- 华丽的分割线 -------------------------------------------------------------------------------------

  写完之后发现还有一种更简单的数组去重算法,使用了数组的filter方法,以下是代码:

1 Array.prototype.unique = function(){
2     return this.filter(function (v, i, m){
3         return i <= m.indexOf(v);
4     });
5 };
6 var array = [1,2,3,12,3,2,1,2,30];
7 array.unique();

 

使用JavaScript进行数组去重——一种高效的算法

标签:

原文地址:http://www.cnblogs.com/kagol/p/5343173.html

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