zoukankan      html  css  js  c++  java
  • 用哈希表去数组重复项,有详细注释

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

    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));
  • 相关阅读:
    laravel 1对多,主键不是整型的坑
    laravel 修改默认Eloquent 映射 表名加s复数的方式
    linux开启与关闭防火墙
    laravel 队列使用(发邮件、短信等)
    linux下隐藏nginx版本及php版本信息
    laravel API开发,使用dingo/api
    80端口被占用
    中国大陆地区数据库-(省市县)总表
    未定义“RunCommand”属性
    按键精灵手机端代码通
  • 原文地址:https://www.cnblogs.com/muwei/p/4941882.html
Copyright © 2011-2022 走看看