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 }