1. 程式人生 > >js高效率陣列去重

js高效率陣列去重

為陣列物件新增陣列去重方法,並且返回刪除的陣列元素:

方法1:

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;

}
演算法事件複雜度為O(n)。

方法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;   
  }