数组去重方法

前端面试中,数组去重也是经常会被问到的,以下是我自己总结的关于数组去重的方法。

第一种:利用数组的indexOf()方法来实现。该方法可用于数组的查找,接收两个参数,第一参数是要查找的项,第二个是查找的起点位置。该方法返回要查找的项在数组中的位置,从数组的开头去找,如果没有找到,会返回-1。

  function unique1(arr) {
        var arr1 = [];
        for(var i = 0;i < arr.length;i++) {
            if(arr1.indexOf(arr[i]) == -1) {
                arr1.push(arr[i]);
            }
        }
        return arr1;
    }
    var A = unique1([1,2,3,3,2,4,5]);
    console.log(A);

第二种:对原数组进行排序(sort方法),排序后相同元素相邻。并且定义一个新数组存放原数组的第一个元素,然后遍历原数组,将原数组中的每一个数与新数组的最后一个数比较,如果不同,则将该值加入新数组。

   function unique2(arr) {
        arr.sort();
        var arr1 = [arr[0]];
        for(var i = 1;i < arr.length;i++) {
            if(arr[i] != arr1[arr1.length-1]) {
                arr1.push(arr[i]);
            }
        }
        return arr1;
    }
    var B = unique2([2,4,2,3,1,1,2,4]);
    console.log(B);

第三种:定义一个新数组存放原数组的第一个元素,然后将原数组元素和新数组元素一一进行对比,如果值不同,则将该值存放在新数组中。

   function unique3(arr) {
        var arr1 = [arr[0]];
        for(var i = 1;i < arr.length;i++) {
            var flag = false;
            for(var j = 0;j < arr1.length;j++) {
                if(arr[i] == arr[j]) {
                    flag = true;
                    break;
                }
            }
            if(!flag) {
                arr1.push(arr[i]);
            }
        }
        return arr1;
    }
    var C = unique3([4,3,2,3,2,1,4,5]);
    console.log(C);

第四种:es6提供的Set数据结构

    var arr = [2,3,2,2,3,4,1,5,4];
    var arr1 = new Set(arr);
    console.log(arr1);

Set数据结构类似于数组,但是成员的值都是唯一的,没有重复的值。所以利用Set也可以去实现数组去重。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值