JS(JavaScript)中两种最基础的数组去重算法

在学习过程中发现两种基础的数组去重的方法,虽说是两种,其实只是把第一种方法的第二层for循环中改变了一下条件表达式和把递增改成递减。


方法一: 重复的元素在最后重复的位置显示

    var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];

    var newArr = [];

    for (var i = 0; i < arr.length; i++) {

        // 创建标记变量

        var flag = true;

        // 后面元素与前面元素重复的话,

        // 前面重复元素不会添加到新数组中

        for (var j = i + 1; j < arr.length ; j++) {

            if (i == j) {

                // 位置重复不进行判断

                // 直接进行下一个位置的判断

                continue;

            }

            //判断是否重复

            if (arr1[i] == arr1[j]) {

                // 重复了,把flag标记为false

                flag = false;

                // 已经判断重复了,无需再判断后续元素

                // 直接break,跳出这一层循环

                break;

            }

        }

        // flag未标记为false(即遍历后未发现此时的arr[i]

        // 是不与其他数组元素重复的

        if (flag) {

            // 添加不重复的数组元素

            newArr1[newArr1.length] = arr1[i];

        }

    }

    console.log(newArr1);

原数组为: [2, 0, 6, 1, 77, 0, 52, 0, 25, 7]

输出结果为: [2, 6, 1, 77, 52, 0, 25, 7]


方法二: 重复的元素在第一次重复的位置显示

    var arr1 = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];

    var newArr1 = [];

    for (var i = 0; i < arr1.length; i++) {

        // 创建标记变量

        var flag = true;

        // 后面元素与前面元素重复的话,

        //后面重复元素不会添加到新数组中

        for (var j = i + 1; 0 <= j ; j--) {

            if (i == j) {

                // 位置重复不进行判断

                // 直接进行下一个位置的判断

                continue;

            }

            //判断是否重复

            if (arr1[i] == arr1[j]) {

                // 重复了,把flag标记为false

                flag = false;

                // 已经判断重复了,无需再判断后续元素

                // 直接break,跳出这一层循环

                break;

            }

        }

        // flag未标记为false(即遍历后未发现此时的arr[i]是不与其他数组元素重复的

        if (flag) {

            // 添加不重复的数组元素

            newArr1[newArr1.length] = arr1[i];

        }

    }

    console.log(newArr1);

原数组为: [2, 0, 6, 1, 77, 0, 52, 0, 25, 7]

输出结果为: [2, 0, 6, 1, 77, 52, 25, 7]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值