• 用哈希表去数组重复项,有详细注释


    这个我不懂,男朋友给我讲了一遍,我还是不太明白,于是自己带入实例一个一个理了一遍,写上了很详细的注释,如果有人能看到,并且和我一样不太理解,希望看到这个就都能懂哈,哎学习中的菜鸟伤不起~

    var countArr = [1, 2, 1];
    function unique(arr) {
        var resultArr = [],
            hash = {}; //定义返回的数组,和哈希表
        for (var i = 0, elem;
        (elem = arr[i]) != null; i++) {
            //for循环第一句话:定义i=0,和elem两个变量
            //for循环第二句话:把arr[i]的值赋给elem,判断elem的值是否为空
            //①当i=0,第一次循环,elem=arr[0]=1,所以不为null,进入循环内部
            //②当i=1,第二次循环,elem=arr[1]=2,所以不为null,进入循环内部
            //③当i=2,第三次循环,elem=arr[2]=1,所以不为null,进入循环内部
            if (!hash[elem]) {
                //①这时elem=1,if(!hash[1])由于这时hash={},所以hash[1]没有值为false,!hash[1]就为true,执行if内部语句
                //②这时elem=2,if(!hash[2])由于这时hash={1:true},所以hash[2]没有值为false,!hash[2]就为true,执行if内部语句
                //③这时elem=1,if(!hash[1])由于这时hash={1:true,2:true},所以hash[1]有值为true,!hash[1]就为false,不执行if内部语句
                resultArr.push(elem);
                //①resultArr=[1]
                //②resultArr=[1,2]
                //不执行第三次
                hash[elem] = true;
                //①hash={1:true}
                //②hash={1:true,2:true}
                //不执行第三次
            };
        };
        return resultArr;
    }
    document.write(unique(countArr));
  • 相关阅读:
    MongoDB简单使用
    证明Whiile比for的效率高
    Python的垃圾回收机制
    Google C++编程风格指南
    AVR GCC对端口的操作指南
    Android Audio 分析
    nesC 语言参考手册
    浅析Linux操作系统工作的基础
    【python】bytearray和string之间转换,用在需要处理二进制文件和数据流上
    Matlab 仿真实现TI Instaspin 的Foc 逆Clarke变换和SVPWM
  • 原文地址:https://www.cnblogs.com/muwei/p/4941882.html
Copyright © 2020-2023  润新知