zoukankan      html  css  js  c++  java
  • javascript中模拟hashtable对数组进行快速查找

        面对一个数组,有时候希望能够直接访问一个特定元素,而不是对整个数组循环来查找该元素。想想C#中的查询方便的Hashtable,javascript可以模拟该技术以实现对数组的快速查找。
        在
    javascript中,array被视作一个对象,这样就可以为其定义属性(property)而且不会影响数组中的原有数据。属性可以通过其名称进行引用。
        实现的关键:对一个已存在的数组,我们必须为其每个元素生成一个唯一标识值,这样才能有效得访问到所有元素。

        作为示例,首先创建一个自定义对象
    employee, 有两个属性nameage。

         function employee(name, age)
         {
             this.name = name;
             this.age = age;
         }
        创建数组:
         var employees = new Array();
         employees[employees.length] = new employee("Anders"25);
         employees[employees.length] = new employee("Andrew"27);
         employees[employees.length] = new employee("Bill"45);
       
        模拟
    hashtable
         for(var i = 0; i < employees.length; i++)
         {
             employees[employees[i].name] = employees[i];
         }
        这里用employees[i]name属性作为hashtablekeyemployees[i]作为value,这样就可以通过name进行快速查找;
        比如:var BillsAge = employees["Bill"].age;
       
        注意:上面定义的数组中,很难避免会出现两个name重复的元素,那么这时就会出现问题,后加的对象会覆盖掉原来的对象。所以要尽量保证用作hashtablekey的变量值的唯一性,这样才能保证访问到每一个元素。如果对象的一个属性不能保证唯一性,可以考虑多个属性的合并值

        参考资料:
        (Oreilly)Javascript And Dhtml Cookbook.chm
    作者:Anders Cui
    出处:http://anderslly.cnblogs.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    C# WPF透明黑色样式窗口
    ExtJS速学
    编译away3d例程序记
    用VC加载Lua.lib,C++调用lua脚本函数
    mysql数据库备份
    Google TTS(文字转语音)api 2
    C Sharp Coding Standards
    微信公众平台功能大杂烩 ip/域名查询 车牌号归属地查询 手机归属地查询 公交查询 英汉互译
    google jsapi学习记录
    Google TTS(文字转语音)api
  • 原文地址:https://www.cnblogs.com/anderslly/p/javascripthashtable.html
Copyright © 2011-2022 走看看