關於數組去重的問題--hash表方法


      數組去重有很多方法,效率較高的方法是利用hash表來檢測數組中是否有重復項。廢話不多說,我查資料編寫了如下代碼:

 

  

function unique(arr){
  var result = [], hash = {};    //定義新數組result ,定義hash.
  for (var i = 0, elem; (elem = arr[i]) !=null; i++) {      //令elem等於傳入的數組的某一項並遍歷

  console.log(hash[elem]);  //如果在這里加入輸出語句,輸出hash表中每個項是否存在,輸出的結果是4個undefined、true、2個undefined、true,看下面我定義的數組,遍歷前四個數的時候,hash表中沒有這四個值(1,23,34,45),所以if語句成立,將這四個數push到result中,另這些表中的數都為true。當遍歷到第二個1的時候,hash[elem] = true , 所以if語句就不執行了,就不會將重復的數組push進去,也就達到了目的

  if(!hash[elem]){    

      result.push(elem);
      hash[elem] = true;
    }
    console.log(hash[elem])
  }
console.log(result);   //[1,23,34,45,6,4]
console.log(hash instanceof Object);    //true
return result;  
}

var arr = [1,23,34,45,1,6,4,23];
unique(arr);

 

 

我個人是這樣理解的,如果有什么偏差,請指出哦~

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM