日期:2014-05-16  浏览次数:20460 次

合并数组,删除重复的元素(内附一种高效算法)
譬如说:
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;
};