为数组对象添加数组去重方法,并且返回删除的数组元素:
方法1:
Array.prototype.clearRedurance=function(){算法事件复杂度为O(n)。
var newArray=[],//
redurance=[],//
i,//
length;
this.sort(function(a,b){
return a>b ? 1:(a<b ? -1:0);
});//数组先排序
newArray.push(this[0]);
for(i=0,length=this.length;i<length;i++){
if(newArray[newArray.length-1]!=this[i]){
newArray.push(this[i]);
}else{
redurance.push(this[i]);
this.splice(i,1);
i--;
length--;
}
}
return redurance;
}
方法2:利用hash
Arrary.prototype.clearReduance=function(){
var ret=[],
i=0,//
length=this.length,
item,//
key,//
hash={};
for(;i<length;i++){
item=this[i];
key=typeof(item)+item;
if(hash[key]!=1){
ret.push(item);
hash[key]=1;
}else{
ret.push(this[i]);
this.splice(i,1);
i--;
length--;
}
}
return ret;
}
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。