手写js数组的去重方法

102 阅读2分钟

js数组去重的方法有很多,自己纯手写效率低,且繁琐,但是对于新手训练思维还是很有帮助的。接下来我只写一种比较麻烦好理解的数组去重的思路,供大家参考和批评。

干净的代码 建议先阅读一遍 看不懂后 再看下面的解析版 当然我并没有封装成一个函数 以后可能会更新

    var arr3 = [11,23,45,11,2,4,6,5,45,11];
    var newArr=[];
    for(let i = 0; i < arr3.length; i++){
        var flag = true;
        for(let j = 0; j < newArr.length ; j++){
            if(arr3[i] == newArr[j]){
                flag = false;
                break;
            }
        }
        if(flag){
            newArr[newArr.length]  = arr3[i]; 
        }
    }
    console.log(arr3);
    console.log(newArr);

image.png 注释很乱的代码版本

    var arr3 = [11,23,45,11,2,4,6,5,45,11];
    var newArr=[];
    for(let i = 0; i < arr3.length; i++){//取出arr3数组里面的所有数
        var flag = true;//定义一个标志 标明如果没有重复的 就为 true 并且每取出arr3数组的一个数就给flag的值初始化为true
        for(let j = 0; j < newArr.length ; j++){//取出新数组newArr里面的每一个数(没有重复的数字就添加到newArr新数组里面 每添加一个数字,新数组的长度就加1 )
            if(arr3[i] == newArr[j]){//拿新数组newArr里面的数 和 旧数组arr3里面的数 一一进行对比 如果有重复的进入if判断语句
                flag = false;//有重复的 给flag 赋值为false
                break;//如果有重复的 不需要再继续进行判断了 直接跳出
            }
        }
        if(flag){//进行判断 如果 flag为 true 就代表没有重复的 进入if语句 如果为false就代表有重复的 不进入if语句
            newArr[newArr.length]  = arr3[i]; //arr3[i] 这个数值 在newArr里面没有 所以添加在newArr的尾部;相当于 arr[2]  = 3;
        }
    }
    console.log(arr3);
    console.log(newArr);

image.png