js数组去重的5中常用方法

 定义同一个数组如下:

var arr = [2,3,1,1,1,1,3,3,3,6,5,5,6,7,4,8];

1. 遍历原数组,然后for循环里面遍历其他数据,如果有一样的,那么利用splice删除其中一个即可。

for(var i=0;i<arr.length;i++){
     //再次遍历数组,将其他的数据依次和arr[i]进行对比,有重复的就删除
     // i=1 即数字3去重  第一次删除的下标j=6  删除后j++继续遍历,j=7,对比就漏了一个,所以j--;
  for(var j=i;j<arr.length;j++){
     if(arr[i]==arr[j]&&i!=j){
         arr.splice(j,1);
         j--;
     }
  }
}
document.write(arr);

2.设置一个不重复的下标的方法。

 //先由小到大排序
 arr.sort(function(num1,num2){
     return num1- num2;
 });
 var i =0;//表示不重复数据的下标
 for(var j=1;j<arr.length;j++){
     //让下标为j的数据和下标为i的数据进行对比。
     //如果不一样,那么i++,并把下标为j的数据赋给下标为1的位置
     if(arr[j]!=arr[i]){
        i++;//给数据腾出一个位置
        arr[i]=arr[j];
     }
 }
 //i其实就是最后一个不重复数据的下标,i后面的位置就可以直接删除
 arr.splice(i+1);//删除下标为i+1及后续所有位置的数据
 arr.length=i+1;
 document.write(arr);

3.定义空数组,利用indexOf()方法。

var newArr =[];
for(var i=0;i<arr.length;i++){
    //判断没有的话加入新数组中
    if(newArr.indexOf(arr[i])==-1){
        newArr.push(arr[i]);
    }
}
document.write(arr);

4.遍历原数组,从1开始,和前一个数据进行比较,如果不一样,那么追加新数组中,一样则不管。

//先由小到大进行排序
arr.sort(function(num1,num2){
    return num1- num2;
});
//遍历原数组,从1开始,和前一个数据进行比较,如果不一样,那么追加新数组中,一样则不管。
var newArr = [arr[0]];
for(var i=1;i<arr.length;i++){
    if(arr[i]!=arr[i-1]){
        newArr.push(arr[i]);
    }
}
document.write(newArr);

5.es6新特性Set()

//set去重
var newArr = [...new Set(arr)];
document.write(newArr);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值