js删除数组中重复的元素

 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     }
原文地址:https://www.cnblogs.com/lhyhappy365/p/5912460.html