js数组去重复项

转载 2013年12月03日 23:07:11

转载自:http://www.cnblogs.com/novus/archive/2011/06/30/1921132.html


今天看了   oneroom的 【javascript数字数组去重复项】觉得挺有意思的。顺便把我以前在看的对比一下。也算是做个备份。

第一种:也是最笨的吧。

 

1
2
3
4
5
6
7
8
9
10
11
12
Array.prototype.unique1 = function () {
    var r = new Array();
    label:for(var i = 0, n = this.length; i < n; i++) {
        for(var x = 0, y = r.length; x < y; x++) {
            if(r[x] == this[i]) {
                continue label;
            }
        }
        r[r.length] = this[i];
    }
    return r;
}

第二种:这个正则天书一样。

 

 

1
2
3
Array.prototype.unique2 = function () {
    return this.sort().join(",,").replace(/(,|^)([^,]+)(,,\2)+(,|$)/g,"$1$2$4").replace(/,,+/g,",").replace(/,$/,"").split(",");
}

第三种:使用对象的【hasOwnProperty】方法

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Array.prototype.unique3 = function() {
    var temp = {}, len = this.length;
    for(var i=0; i < len; i++)  {
        var tmp = this[i];
        if(!temp.hasOwnProperty(tmp)) {
            temp[this[i]] = "my god";
        }
    }
  
    len = 0;
    var tempArr=[];
    for(var i in temp) {
        tempArr[len++] = i;
    }
    return tempArr;
}

第四种:先排序,前项比后项。这个方法挺简单的,但也实用。

 

 

1
2
3
4
5
6
7
8
9
10
11
12
Array.prototype.unique4 = function () {
    var temp = new Array();
      this.sort();
      for(i = 0; i < this.length; i++) {
          if( this[i] == this[i+1]) {
            continue;
        }
          temp[temp.length]=this[i];
      }
      return temp;
  
}

 

下面是以前经常用的,效率也很好。有点想hash表的感觉。

 

1
2
3
4
5
6
7
8
9
10
11
Array.prototype.unique5 = function() {
    var res = [], hash = {};
    for(var i=0, elem; (elem = this[i]) != null; i++)  {
        if (!hash[elem])
        {
            res.push(elem);
            hash[elem] = true;
        }
    }
    return res;
}

 

还要谢谢oneroom 他给demo里面的时间计算函数很好用。以前我都不知道测试这些效率呢。

稍后附上他的demo和Watch文件。

文件

作者:Novus
出处:http://www.cnblogs.com/novus/
本文版权归作者和博客园共有,欢迎任何形式的转载,但请务必注明出处。


高效率去掉js数组中重复项

http://www.cnblogs.com/sosoft/archive/2013/12/08/3463830.html

高效的去掉js数组或者字符串中重复的对象方法

去掉一个字符串或者数组中重复对象的方法有很多种,zui

JS数组去掉重复元素

JS数组去掉重复元素         面试前端必须准备的一个问题:怎样去掉Javascript的Array的重复项。据我所知,百度、腾讯、盛大等都在面试里出过这个题目。 这个问题看起来简单,但是其实...

关于去除JS数组中的重复元素问题

例如:数组 arr=[1,2,3,1,2,4,5,6];要去除arr[]数组中相同元素(即arr[]数组元素具有单一性)。这里主要讲述两种实现方式:一种是遍历方式实现,另一种是关联数组方式实现。 较...

js数组使用方法

  • 2016年04月11日 09:14
  • 1KB
  • 下载

全国城市js数组

  • 2007年07月06日 13:07
  • 4KB
  • 下载

js数组及对象的赋值和引用

简要归纳:    1、普通的赋值是复制栈区内容。    2、基本类型的数据在栈区存放数据自身,var a=b; //a与b无关。         引用类型数据在栈区存放数据地址。  var a=b; ...

js数组函数拓展

  • 2014年02月13日 20:04
  • 949B
  • 下载

js数组求和的方法(最高效率)

转载自陈建华的博客js数组求和,相信大家多数都是进行循环求和。但是这种方法,资源开销比较大,效率比较低。今天想了想,发现了一个好办法。在此分享一下。1.首先创建一个数组a,数组的长度是10万; ...
  • pic_me
  • pic_me
  • 2016年05月12日 10:58
  • 9136
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:js数组去重复项
举报原因:
原因补充:

(最多只允许输入30个字)