js陣列去重的5種演算法實現
1.遍歷陣列法
最簡單的去重方法,實現思路:新建一新陣列,遍歷傳入陣列,值不在新陣列就加入該新陣列中;注意點:判斷值是否在陣列的方法“indexOf”是ECMAScript5 方法,IE8以下不支援,需多寫一些相容低版本瀏覽器程式碼,原始碼如下:
1 2 3 4 5 6 7 8 9 10 11 |
//
最簡單陣列去重法
function
unique1(array){
var
n = []; //一個新的臨時陣列
//遍歷當前陣列
for ( var
i = 0; i < array.length; i++){
//如果當前陣列的第i已經儲存進了臨時陣列,那麼跳過,
//否則把當前項push到臨時數組裡面
if
(n.indexOf(array[i]) == -1) n.push(array[i]);
}
return
n;
}
|
2.物件鍵值對法
該方法執行的速度比其他任何方法都快, 就是佔用的記憶體大一些,實現思路:新建一js物件以及新陣列,遍歷傳入陣列時,判斷值是否為js物件的鍵,不是的話給物件新增該鍵並放入新陣列。注意 點: 判斷是否為js物件鍵時,會自動對傳入的鍵執行“toString()”,不同的鍵可能會被誤認為一樣;例如: a[1]、a["1"] 。解決上述問題還是得呼叫“indexOf”。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
//
速度最快, 佔空間最多(空間換時間)
function
unique2(array){
var
n = {}, r = [], len = array.length, val, type;
for
( var
i = 0; i < array.length; i++) {
val
= array[i]; type
= typeof
val;
|