• 使用hash表进行数组去重


    哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。

    哈希表的做法其实很简单,就是把Key通过一个固定的算法函数既所谓的哈希函数转换成一个整型数字,然后就将该数字对数组长度进行取余,取余结果就当作数组的下标,将value存储在以该数字为下标的数组空间里。

    而当使用哈希表进行查询的时候,就是再次使用哈希函数将key转换为对应的数组下标,并定位到该空间获取value,如此一来,就可以充分利用到数组的定位性能进行数据定位

    去重方法:

    1.定义一对象hash

    2.将数组每个元素通过hash[arrSame[i]]hash中查询,如果数组元素arrSame[i]hash中,则hash[arrSame[i]]结果为true,如果不存在,则hash[arrSame[i]]结果为undefined,所以

    !hash[arrSame[i]]  存在  false
    !hash[arrSame[i]]  不存在  true

    3.如果不存在,将该数组元素存入result,且将该数组元素作为hash对象的键名,值为true,result即为去重后的数组

        function arrSame(arrSame){
            var hash = {};
            var result = [];
            for(var i = 0, len = arrSame.length;i < len; i++){
                if(!hash[arrSame[i]]){
                    result.push(arrSame[i]);
                    hash[arrSame[i]] = true;
                }
            }
            return result;
        }    

    下面代码为数组去重HTML完整示例,可直接复制在编辑器演示

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>数组</title>
        <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
    </head>
    <body>
        <span>[1,1,2,3,4,5,5]<span>
        <button class='btn1'>去重</button>
        <br>
        <span>[[1,2],[1,2],[1,3],[1,4],[1,4]]<span>
        <button class='btn2'>去重</button>
        <br>
    </body>
    <script>
        //数组去重
        function arrSame(arrSame){
            var hash = {};
            var result = [];
            for(var i = 0, len = arrSame.length;i < len; i++){
                if(!hash[arrSame[i]]){
                    result.push(arrSame[i]);
                    hash[arrSame[i]] = true;
                }
            }
            return result;
        }
        
        var array1=[1,1,2,3,4,5,5];
        var result1=arrSame(array1);
        jQuery(".btn1").click(function(){
            console.log(result1);
            alert(result1);
        });
        
        var array2=[[1,2],[1,2],[1,3],[1,4],[1,4]];
        var result2=arrSame(array2);
        jQuery(".btn2").click(function(){
            console.log(result2);
            alert(result2);
        });
        
    </script>
    </html>
    数组去重示例代码
    
    
  • 相关阅读:
    读书笔记—CLR via C#线程25-26章节
    算法回顾--N皇后问题简单回顾
    编程拾趣--集合子集问题
    读书笔记—CLR via C#异常和状态管理
    读书笔记—CLR via C#字符串及文本
    设计模式---抽象工厂
    读书笔记—CLR via C#反射
    读书笔记—CLR via C#委托和attribute
    C#编程实践—EventBroker简单实现
    Linux平台屏幕录像工具RecordMyDesktop
  • 原文地址:https://www.cnblogs.com/web520/p/6473955.html
Copyright © 2020-2023  润新知