標籤:屬性 ons reac == color cti 定義 儲存 sort
總結一些數組去重,首先定義一個數組 var arry1=[1,5,6,4,8,4,5,5,40,4,50,7,4,55,6,5,444,5,4,4,2,4,5,7,8,8];
1、最常用的,建立數組利用迴圈進行數組比對,小數組可以,大的效能不佳。
function removeDuplicatedItem1(ar) { var rest=[]; for(var i=0;i<ar.length;i++){ if (rest.indexOf(ar[i])==-1){ rest.push(ar[i]) }else { console.log(1) } } return rest; } console.log(JSON.stringify(removeDuplicatedItem3(arry1))) //[1,5,6,4,8,40,50,7,55,444,2]
2、推薦使用的,利用對象儲存數組for迴圈時,每次取出一個元素與對象進行對比,如果這個元素不重複,則把它存放到結果數組中,同時把這個元素的內容作為對象的一個屬性,並賦值為1,存入對象中。每次從原數組中取出一個元素,然後到對象中去訪問這個屬性,如果能訪問到值,則說明重複。
function removeDuplicatedItem2(ar) { var rest=[]; var object={}; for(var i=0;i<ar.length;i++){ if (!object[ar[i]]){ rest.push(arry1[i]) object[ar[i]]=1 }else { console.log(1) } } console.log(JSON.stringify(object)) return rest; }
console.log(JSON.stringify(removeDuplicatedItem3(arry1))) //[1,5,6,4,8,40,50,7,55,444,2]
3、利用數組下標和forEach()進行比對,其實主要利用到indexOf(),返回該數在數組中第一次出現的位置這一特性。
function removeDuplicatedItem3(ar) { var rest=[]; ar.forEach(function (p1, p2, p3) { if(ar.indexOf(p1)===p2){ rest.push(p1) } }) return rest; }
console.log(JSON.stringify(removeDuplicatedItem3(arry1))) //[1,5,6,4,8,40,50,7,55,444,2]
4、先進行排序,這個其實用 的比較少,主要是因為改變了數組的順序。
function removeDuplicatedItem4(ar) { ar.sort(); var rest=[]; var end=ar[0]; for(var i=1;i<ar.length;i++){ if (ar[i]!=end){ rest.push(ar[i]); end=ar[i]; }else { console.log(1) } } return rest; }
console.log(JSON.stringify(removeDuplicatedItem3(arry1))) //[1,5,6,4,8,40,50,7,55,444,2]
js 數組去重