JS能力測評12:查詢重複元素
阿新 • • 發佈:2019-01-05
思路:
將傳入的陣列arr中的每一個元素value當作另外一個新陣列b的key,然後遍歷arr去訪問b[value],若b[value]不存在,則將b[value]設定為1,若b[value]存在,則將其加1。可以想象,若arr中陣列沒有重複的元素,則b陣列中所有元素均為1;若arr陣列中存在重複的元素,則在第二次訪問該b[value]時,b[value]會加1,其值就為2了。最後遍歷b陣列,將其值大於1的元素的key存入另一個數組a中,就得到了arr中重複的元素。
function duplicates(arr) { //宣告兩個陣列,a陣列用來存放結果,b陣列用來存放arr中每個元素的個數 var a = [],b = []; //遍歷arr,如果以arr中元素為下標的的b元素已存在,則該b元素加1,否則設定為1 for(var i = 0; i < arr.length; i++){ if(!b[arr[i]]){ b[arr[i]] = 1; continue; } b[arr[i]]++; } //遍歷b陣列,將其中元素值大於1的元素下標存入a陣列中 for(var i = 0; i < b.length; i++){ if(b[i] > 1){ a.push(i); } } return a; }
另一個方法:
function duplicates(arr) {
var a=arr.sort(),b=[];
for(var i in a){
if(a[i]==a[i-1] && b.indexOf(a[i])==-1) b.push(a[i]);
}
return b;
}//先排序,如果後一個與前一個相等且未儲存,則儲存。