转自 http://www.ajaxbbs.net/blog/post/126/
本来有一个项目会遇到这个问题,但是突然间找到其他解决办法,故把这段精彩的代码转到自己的空间,如果再有这种问题的时候可以借用。
请给Array本地对象增加一个原型方法,它的用途是删除数组条目中重复的条目(可能有多个),返回值是一个仅包含被删除的重复条目的新数组。
<script type="text/javascript">
<!--
Array.prototype.delRepeat=function(){
//tempArr:重复项标志,tempArr1:保存重复数组项
var tempArr=[],tempArr1=[],j=0;
//遍历数组
for(var i=this.length;i>0;i--){
//如果该项还没有重复项
if(!tempArr[this[i-1]]){
tempArr[this[i-1]]=1; //通过关联数组方式标志该项并置为1(代表出现一次)
}else{
if(tempArr[this[i-1]]++==1)tempArr1[j++]=this[i-1]; //如果第一次重复则将该重复项保存,并将重复标志+1
this.splice(i-1,1); //从原数组删除该项(因为是倒序遍历,所以可以直接在此删除)
}
}
return tempArr1; //返回重复项列表
}
var a=new Array(5,410,52,",",24,5,",",true,false,24,24,25,5)
alert("原数组:"+a);
alert("重复项:"+a.delRepeat());
alert("剩余项:"+a);
//-->
</script>