js高效率陣列去重
阿新 • • 發佈:2018-12-31
為陣列物件新增陣列去重方法,並且返回刪除的陣列元素:
方法1:
演算法事件複雜度為O(n)。Array.prototype.clearRedurance=function(){ 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; }