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

182 阅读2分钟

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

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

        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]