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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值