JavaScript-数组去重的4种方式

JavaScript-数组去重的4种方式

方式一 : 排序法去重 (最好理解,性能最低)

    <script>
        var arr = [20,50,60,80,20,50,88];
        //1.对arr排序
        arr.sort(function(a,b){
            return a-b;
        });
        console.log(arr);
        //2.声明空数组存储去重后的数组
        var newArr = [];
        //3.遍历arr, 检查arr[i]  与  arr[i+1]是否一致
        for(var i = 0;i<arr.length;i++){
            if(arr[i] != arr[i+1]){
                //添加到newArr
                newArr.push(arr[i]);
            };
        };
        console.log(newArr);
    </script>

方式二 : 开关法去重 (不好理解,提现编程思想)

    <script>
        var arr = [20,50,60,80,20,50,88];
        //1.声明空数组存储去重后的数组
        var newArr = [];
        //2.遍历arr,检查arr[i] 在不在newArr中
        for(var i = 0;i<arr.length;i++){
            //3.开关法:检测arr[i]在不在newArr中
            //(1)假设不在 :  true:可以添加  false:不可以添加
            var res = true;
            //(2)遍历newArr检查
            for(var j = 0;j<newArr.length;j++){
                if( arr[i] == newArr[j]){//在,不能添加
                    res = false;
                    break;
                };
            };
            //(3)通过res值来判断是否添加
            if(res){
                newArr.push(arr[i]);
            };
        };
        console.log(newArr);
    </script>

方式三 : indexOf去重 (好理解,性能好,实际开发常用)

    <script>
        var arr = [20,50,60,80,20,50,88];
        //1.声明空数组存储去重后的数组
        var newArr = [];
        //2.遍历arr,检查arr[i]在不在newArr中
        for(var i = 0;i<arr.length;i++){
            //3.  newArr.indexOf() : 检查元素在不在newArr中
            if( newArr.indexOf(arr[i]) == -1 ){//不在
                newArr.push(arr[i]);
            };
        };
        console.log(newArr);
    </script>

方式四 : 对象法去重 (最不好理解,提现所有的js语法精髓。最喜欢看别人用这种方式)

    <script>
        var arr = [20, 50, 60, 80, 20, 50, 88];// [20,50,60,80,88]
        /*
            对象法去重核心思路 : 对象的属性名不能重复 
            将数组的元素作为对象的属性名  { "20" : 1 }
        */
        var obj = {};//检测是否有重复元素
        var newArr = [];//存储去重后的数组
        for (var i = 0; i < arr.length; i++) {
            //将数组元素作为对象属性名
            if (obj[arr[i]] == undefined) {//没有重复
                newArr.push(arr[i]);
                obj[arr[i]] = 1;//下一次再出现重复元素,不会是undefined
            };
        };
        console.log(newArr);
    </script>
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值