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

[转]JavaScript去重的6种方法

时间:2014-12-15 23:23:37      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   sp   for   java   

Array.prototype.unique1 = function()
{
    var n = []; 
    for(var i = 0; i < this.length; i++) 
    {
        if (n.indexOf(this[i]) == -1) n.push(this[i]);
    }
    return n;
}

Array.prototype.unique2 = function()
{
    var n = {},r=[];
    for(var i = 0; i < this.length; i++) 
    {
        if (!n[this[i]]) 
        {
            n[this[i]] = true; 
            r.push(this[i]); 
        }
    }
    return r;
}

Array.prototype.unique3 = function()
{
    var n = [this[0]]; 
    for(var i = 1; i < this.length; i++) 
    {
        if (this.indexOf(this[i]) == i) n.push(this[i]);
    }
    return n;
}
Array.prototype.unique4 = function()
{
    this.sort();
    var re=[this[0]];
    for(var i = 1; i < this.length; i++)
    {
        if( this[i] !== re[re.length-1])
        {
            re.push(this[i]); 
        }
    }
    return re;
} 

Array.prototype.unique5 = function(){
    var self = this;
    var _a = this.concat().sort();
    _a.sort(function(a,b){
        if(a == b){
            var n = self.indexOf(a);
            self.splice(n,1);
        }
    });
    return self;
};

Array.prototype.unique6 = function()
{
    return this.reduce(function(p, c)
    {
        if (p.indexOf(c) < 0) p.push(c);
        return p;
    }, []); 
};

Performance test: ( running with an array of 10000 random numbers )

method 1 used 349ms
method 2 used 5ms
method 3 used 442ms
method 4 used 15ms
method 5 used 13ms
method 6 used 424ms

So, the best idea to unique an array is to use a "hash map" to check if an item is repeated.

 

There is a demo page: http://php.js.cn/down/sample/array.html

 

原文地址:6 ways to get unique values of an Array in Javascript

[转]JavaScript去重的6种方法

标签:style   blog   http   io   ar   color   sp   for   java   

原文地址:http://www.cnblogs.com/zjzhome/p/4165976.html

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