關於去除JS陣列中的重複元素問題
阿新 • • 發佈:2019-01-27
例如:陣列 arr=[1,2,3,1,2,4,5,6];要去除arr[]陣列中相同元素(即arr[]陣列元素具有單一性)。
這裡主要講述兩種實現方式:一種是遍歷方式實現,另一種是關聯陣列方式實現。
較為好理解也是較為普遍的一種方式遍歷方式;程式碼如下:
var arr=[1,2,3,1,2,4,5,6];
function repeat1(arr){
//遍歷arr中每個元素,同建立一新的索引陣列result
for(var i=0,result=[];i<arr.length;i++){
//遍歷result中每個元素和arr中i位置元素比較
for(var j=0;j<result.length;j++){
//如果arr中i位置的元素等於result中j位置的元素,就退出迴圈
if(arr[i]==result[j]) break;
}
//如果j走到頭,說明在result中沒有遇到重複的元素,就將arr[i]放入result結尾
if(j==result.length)
result[result.length]=arr[i];
}
return result;
}
方法二採用關聯(hash)陣列:
var arr=[1,2,3,1,2,4,5,6];
function repeat2(arr){
//遍歷arr中每個元素,宣告一個關聯陣列,一個索引陣列
for(var i=0,hash=[],result=[];
i<arr.length;
i++){
//用arr[i]的元素作為hash[]陣列的key,去result中查詢是否包含——由hash演算法完成,無需遍歷
if(hash[arr[i]]===undefined){
hash[arr[i]]=true;//將arr[i]加入hash
//將arr[i]加入result
result[result.length]=arr[i];
}
}
return result;
}