合并数组,删除重复的元素(内附一种高效算法)
譬如说:
array1={a,b,c,d},array2={a,f,g,h},合并后结果是这样{b,c,d,f,g,h},注意不是{a,b,c,d,f,g,h},重复的元素也去掉
有什么比较好的算法吗,如果结果是{a,b,c,d,f,g,h}的话,下面的算法是目前我见过最快的
<SCRIPT LANGUAGE="JavaScript">
<!--
Array.prototype.unique = function()
{
var a = {}; for(var i=0; i<this.length; i++)
{
if(typeof a[this[i]] == "undefined")
a[this[i]] = 1;
}
this.length = 0;
for(var i in a)
this[this.length] = i;
return this;
}
var a = new Array(1,2,3,4);
var b = new Array(2,3,5,7);
var c = a.concat(b).unique();
alert(c);
//-->
</SCRIPT>
------解决方案--------------------这个问题已经讨论过了,你的答案也就是上次讨论的结果。
Array.prototype.unique = function()
{
for(var a={}, i=this.length-1; i>-1; i--)
{
if(typeof(a[this[i]])=="undefined") a[this[i]] = 1;
}
this.length=0;
for(i in a) this[this.length] = i; return this;
};