JavaScript中数组去重的几种常用方法

项目中经常会处理一些数据,像一个json数据,里边全是数组,要把所有的数据的相同的属性值放在一个数组里,然后再判重,获取最终的数据,所以就会经常用到数组判重,于是找了几个常用的方法。如下:

第一种:先把原数组的第一个值传进新数组,然后从索引为1开始遍历原数组,遍历每一个的时候再遍历新数组的每一项,如果不全等的话,把原数组的这个值写入新数组,这样最后得到的新数组就是不重复的值。

function unique(arr){

  var res = [arr[0]];

  for(var i=1;i<arr.length;i++){

    var repeat = false;

    for(var j=0;j<res.length;j++){

      if(arr[i] === res[j]){

        repeat = true;

        break;

      }

    }

    if(!repeat){

      res.push(arr[i]);

    }

  }

  return res;

}

第二种:先把原数组排序,所有格式不同的也都会排到一起去,然后比较最后一个是不是和数组的任何一项一样,不一样则添进新数组。

function unique(arr){

  var arr2 = arr.sort();

  var res = [arr2[0]];

  for(var i=1;i<arr2.length;i++){

    if(arr2[i] !== res[res.length-1]){

      res.push(arr2[i]);

    }

  }

  return res;

}

第三种:利用json属性是否一样去重,把原数组的每一项的值添进json的属性,每次遍历原数组看是否已经存在了这个json属性,如果没有存在就添进json属性和添进新数组。

function unique(arr){

  var res =[];

  var json = {};

  for(var i=0;i<arr.length;i++){

    if(!json[arr[i]]){

      res.push(arr[i]);

      json[arr[i]] = 1;

    }

  }

  return res;

}

第四种:个人觉得这一个是最简洁的去重方式,还没有很大的弯。就是首先把原数组的第一项值添进新数组,完事遍历原数组,把原数组的每一项值放在新数组里indexof()方法看是否存在,如果不存在则把这个值添进新数组。

  function unique(arr){
     var newArr = [arr[0]];
     for(var i=1;i<arr.length;i++){
    if(newArr.indexOf(arr[i]) == -1){
             newArr.push(arr[i]);
        }
        }
        return newArr;
   }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值