1、方法一
將數組逐個搬到另一個數組中,當遇到重復元素時,不移動,若元素不重復則移動到新數組中
1 function unique(arr){ 2 var len = arr.length; 3 var result = [] 4 for(var i=0;i<len;i++){ 5 var flag = true; 6 for(var j = i;j<arr.length-1;j++){ 7 if(arr[i]==arr[j+1]){ 8 flag = false; 9 break; 10 } 11 } 12 if(flag){ 13 result.push(arr[i]) 14 } 15 } 16 return result; 17 }
2、方法二
遍歷數組arr,把元素分別放入另一個數組result中,判斷arr中的元素在result中是否存在,不存在即加入temp中
1 function unique(arr){ 2 var result = []; 3 for(var i=0;i<arr.length;i++){ 4 if(result.indexOf(arr[i])==-1){ 5 result.push(arr[i]) 6 } 7 } 8 return result; 9 }
3、方法三
將數組的值作為對象的屬性,通過對象的屬性值來判斷數組是否重復,若該項不重復則給對象對應屬性值賦為true,便於之后的判斷,並將數據項加入結果集中
1 function unique(arr) { 2 var result = []; 3 var obj = {}; 4 for(var i=0;i<arr.length;i++){ 5 if(!obj[arr[i]]){ 6 result.push(arr[i]); 7 obj[arr[i]] = true; 8 } 9 } 10 return result 11 }
也可以通過判斷對象中是否包含該屬性來去重,此時對象屬性的值可以任意但必須有值,否則會認為該屬性不存在
1 function unique(arr) { 2 var result = []; 3 var obj = {}; 4 for(var i=0;i<arr.length;i++){ 5 if(!obj.hasOwnProperty(arr[i])){// if(!(arr[i] in obj)) 6 result.push(arr[i]); 7 obj[arr[i]] = 0; 8 } 9 } 10 return result 11 }
4、方法四
將數組的值賦給另一個數組的鍵,此時重復的元素都被刪除,然后取新數組的鍵作為去重后的結果
1 function unique(arr){ 2 var result = [] 3 var temp = [] 4 for(var i in arr){ 5 temp[arr[i]] = 1; 6 } 7 for(var i in temp){ 8 result.push(i) 9 } 10 return result 11 }