小白世界里的数组去重

数组去重

数组去重这种问题很常见,常见的方法有很多种,作为初学者的我,也整理了以下四种,个人认为这四种容易理解,也实用

  • set方法
    该方法是Es6新增语法,同时该方法的特点是元素不能重复
    可以利用这一特点达到数组去重
    例:letlet arr = [1, 2, 3, 3, 2, 4, 5, 1, 6, 5, 3, 7, 8, 8, 8];
    let s = new Set(arr);
    console.log(‘set:’, s);
    在这里插入图片描述

  • 双重for循环加splice截取
    利用循环比较,加上splice截取掉相同的元素,也能达到去重效果
    例:for (var i = 0; i < arr.length; i++) {
    for (var j = i + 1; j < arr.length; j++) {
    if (arr[i] == arr[j]) {
    arr.splice(j, 1);
    j–;
    }
    }
    }
    console.log(‘双重for:’, arr);
    j–;的原因是,如果不减一的话,当有三个相同的元素是,会忽略一个,因为截取后,数组长度减一了吗,所以当截取一个字符时j需要减一
    在这里插入图片描述

  • filter结合indexOf()
    该方法也是Es6新增语法,利用索引过滤掉相痛的元素
    例:let arr1 = [];
    arr.filter((item, index) => {
    if (arr.indexOf(item, 0) === index) {
    arr1.push(item);
    }
    })
    console.log(‘filter’, arr1);
    在这里插入图片描述
    该方法,意思是,得到元素和该元素对应的索引时,我们去这个数组里找,因为indexOf是找到第一次出现的索引,如果不相等说明,这两个元素值是相等的,也就是重复了,所以此时我们不会在执行push将它加入新数组里面

  • 利用indexOf去重
    我们利用indexOf查找元素索引的特点来实现,循环数组,在新数组里用indexOf的方法找数组里的值,如果没有,则indexOf的值为-1,那么我们就用push的方法将该元素添加到新数组里
    let arr2 = [];
    for (let i = 0; i < arr.length; i++) {
    if (arr2.indexOf(arr[i]) == -1) {
    arr2.push(arr[i]);
    }
    }
    console.log(‘indexOf’, arr2);
    在这里插入图片描述
    当然数组去重的方法有很多,但是个人认为掌握理解这几种就够用了,其它方式也无非就是,利用比较,或者一些方法本身就不能重复的这一特点来达到去重的目的,对于小白的我,也只是分享下自己理解掌握的方法,忘各路大神勿喷哈,谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值