JS中数组去重的方法

方法很多,在此仅总结常见的几种。

详细可参考:JS数组去重

1.ES6 set()去重

        function uniq(array) {
            return Array.from(new Set(array))
        }
        var array = [2, 9, 9, 4, 6, 2];
        console.log(uniq(array)); //[2, 9, 4, 6]

2.indexOf与新数组去重

新建一个数组,遍历传入数组,值不在新数组就push到该新数组中

        function uniq(array) {
            var temp = [];
            for (let i = 0; i < array.length; i++) {
                if (temp.indexOf(array[i]) == -1) {
                    temp.push(array[i]);
                }
            }
            return temp;
        }
        var array = [2, 9, 9, 4, 6, 2];
        console.log(uniq(array)); //[2, 9, 4, 6]

3. filter 过滤当前值对应唯一索引

        function unique(array) {
            return array.filter(function (item, index, array) {
                //判断当前的值对应的索引是不是唯一的
                return array.indexOf(item, 0) === index;
            });
        }
        var array = [2, 9, 9, 4, 6, 2];
        console.log(uniq(array)); //[2, 9, 4, 6]

4. 双循环去重

有点像冒泡排序

        function uniq(array) {
            // 第一层for用来控制循环的次数
            for (var i = 0; i < array.length; i++) {
                //第二层for 用于控制与第一层比较的元素
                for (var j = i + 1; j < array.length; j++) {
                    //如果相等
                    if (array[i] == array[j]) {
                        //删除后面的 即第 j个位置上的元素  删除个数 1 个
                        array.splice(j, 1);
                        // j--很关键的一步  如果删除 程序就会出错 
                        //j--的原因是 每次使用splice删除元素时 返回的是一个新的数组 
                        j--;
                    }
                }
            }
            return array;
        }
        var array = [2, 9, 9, 4, 6, 2];
        console.log(uniq(array)); //[2, 9, 4, 6]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值