js数组去重的三种方法

       自己总结的三种去重方法,希望能对大家有些帮助。

第一种:

这种方法比较简单,代码如下:

    var arr = [1, 2, 3, 4, 3, 2, 1]

    var arr2 = []

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

      if (arr2.indexOf(arr[i]) === -1) {

        arr2.push(arr[i])

      }

    }

    console.log(arr2);
    //结果:[1, 2, 3, 4]

这种方法很好理解,利用了indexOf()方法,如果查询到则返回查询到的第一个结果在数组中的索引,如果查询不到则返回-1。先创建一个新的空数组用来存储新的去重的数组,然后遍历arr数组,在遍历过程中,分别判断arr2数组里面是不是有遍历到的arr中的元素,如果没有,直接添加进arr2中,如果已经有了(重复),那么不操作,那么从头到尾遍历一遍,正好达到了去重的目的。

第二种:

这种方法用到了sort()方法,代码如下:

    var arr = [1, 2, 3, 4, 3, 2, 1]

    arr.sort()

    var arr2 = [arr[0]]

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

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

        arr2.push(arr[i])

      }
      
    }

    console.log(arr2);

    // 结果:[1, 2, 3, 4]

这种方法的思路是:先用sort()方法把arr排序,那么排完序后,相同的一定是挨在一起的,把它去掉就好了,首先给新数组初始化一个arr[0],因为我们要用它和arr数组进行比较,所以,for循环里面i也是从1开始了,我们让遍历到的arr中的值和新数组最后一位进行比较,如果相等,则pass掉,不相等的,push进来,因为数组重新排序了,重复的都挨在一起,那么这就保证了重复的这几个值只有第一个会被push进来,其余的都和新数组的被push进来的这个元素相等,会被pass掉,也达到了去重的效果。

第三种:

    var arr = [1, 2, 3, 4, 3, 2, 1]

    var arr2 = []

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

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

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

          i++

          j = i

        }

      }

      arr2.push(arr[i])

    }

    console.log(arr2);

    // 结果:[4, 3, 2, 1]

思路:两层for循环,外面一层是控制遍历到的前一个arr中的元素,里面一层控制的是第一层访问到的元素后面的元素,不断的从第0个开始,让第0个和他后面的元素比较,如果没有和这个元素相等的,则证明没有重复,推入到新数组中存储起来,如果有和这个元素相等的,则pass掉它,直接进入下一次循环。从第1个开始,继续和它后面的元素进行比较,同上进行,一直循环到最后就是:不重复的都被推入新数组里面了,而重复的前面的元素被pass掉了,只留下了最后面的一个元素,这个时候也就不重复了,则推入新数组,过滤掉了所有重复的元素,达到了去重的目的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值