第一种:也是最笨的吧。
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;}
第二种:这个正则天书一样。
Array.prototype.unique2
= function ()
{ return this.sort().join(",,").replace(/(,|^)([^,]+)(,,\2)+(,|$)/g,"$1$2$4").replace(/,,+/g,",").replace(/,$/,"").split(",");}
第三种:使用对象的【hasOwnProperty】方法
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;}
第四种:先排序,前项比后项。这个方法挺简单的,但也实用。
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表的感觉。
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;}
使用方法:yourarray=yourarray.unique4();//你的数组名、unique1 2 3 4 5、、
本文介绍了五种不同的JavaScript数组元素去重方法,包括直接比较、正则表达式处理、利用对象属性检查等手段,并提供了每种方法的具体实现。
417

被折叠的 条评论
为什么被折叠?



