javascript 陣列去重的幾種方法
方法一:利用indexOf判斷新陣列
underscore.js中實際上也是使用的類似的indexOf
//傳入陣列 function unique1(arr){ var tmpArr = []; for(var i=0; i<arr.length; i++){ //如果當前陣列的第i已經儲存進了臨時陣列,那麼跳過, //否則把當前項push到臨時數組裡面 if(tmpArr.indexOf(arr[i]) == -1){ tmpArr.push(arr[i]); } } return tmpArr; }
方法二:利用indexOf判斷舊陣列
function unique2(arr){
var tmpArr = []; //結果陣列
for(var i=0; i<arr.length; i++){
//如果當前陣列的第i項在當前陣列中第一次出現的位置不是i,
//那麼表示第i項是重複的,忽略掉。否則存入結果陣列
if(arr.indexOf(arr[i]) == i){
tmpArr.push(arr[i]);
}
}
return tmpArr;
}
方法三:利用hash查詢
這裡利用了JS物件的實現就是hash表的特性
function unique3(arr){
var tmpArr = [], hash = {};//hash為hash表
for(var i=0;i<arr.length;i++){
if(!hash[arr[i]]){//如果hash表中沒有當前項
hash[arr[i]] = true;//存入hash表
tmpArr.push(arr[i]);//存入臨時陣列
}
}
return tmpArr;
}
方法四:使用ES6 Set