js小练习-数组去重的几种常见方法

最近有练习到数组去重这个题,老师说方法多的是,代码是死的,人是活的,那就浅看一下,我能想到几种方法吧。

第一种:使用includes()方法

includes() 判断一个数组是否包含在另一个数组中,根据情况返回 true 或 false。

        var arr = ['a', 1, 2, 3, 'a', 3, 1, 2];
        var arr1 = [];
        //创建一个新数组
        for (let i = 0; i < arr.length; i++) {
            if (!arr1.includes(arr[i])) {
            //使用includes()方法判断arr1里面是否存在arr里的元素,如果不存在就添加
                arr1.push(arr[i]);
            }

        }
        console.log(arr1);

运行结果如下:

第二种:通过index0f判断

indexOf()方法,indexOf() 查找元素第一次出现的索引值,如果没有找到该元素则返回-1 

        var arr = ['a', 1, 2, 3, 'a', 3, 1, 2];
        var arr1 = [];
//indexOf() 查找元素第一次出现的索引值,如果没有找到元素,则返回-1
        for (i in arr) {
            if (arr1.indexOf(arr[i]) == -1) {
//返回-1,将该元素加入到arr1数组当中
                arr1.push(arr[i]);
            }
        }
        console.log(arr1);

 第三种:利用sort()去重

 sort()  数组的排序

        var arr = ['a', 1, 2, 3, 'a', 3, 1, 2];
        var arr1 = [];
        arr = arr.sort();
//将数字排序
        for (i in arr) {
            if (arr[i] !== arr[i - 1]) {
判断后一个是否等于前一个,不等于就加入到新数组种
                arr1.push(arr[i]);
            }
        }
        console.log(arr1);

运行结果如下:

第四种:es6新增的方法

        var arr = ['a', 1, 2, 3, 'a', 3, 1, 2];
        // Array.from() //将一个可以迭代的数据结构转化为数组
        new Set(arr) // set 类型 {0:"a"...}
        arr = Array.from(new Set(arr));
        console.log(arr)

运行结果如下: 

第五种:说到数组去重,不得不提一下,js内置的API中的splice() 它的功能真的很强大。

splice():数组切片(增删改)


        var arr = ["a", 1, 2, 3, "a", 3, 2, 1];
        for (let i = 0; i < arr.length; i++) {
//遍历第一次,取出数组里的每一个元素
            for (let j = i + 1; j < arr.length; j++) {
//遍历第二次,取出第一次循环结束取出的元素,后面的所有元素
                if (arr[i] === arr[j]) {
//将外层循环取出的元素与内层循环取出的元素作比较,相等则删除
                    arr.splice(j, 1);
                    console.log(arr);
                }
            }
        }

运行结果如下:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值