惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The GitHub Blog
The GitHub Blog
博客园 - 三生石上(FineUI控件)
V
V2EX
博客园 - 司徒正美
小众软件
小众软件
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Tailwind CSS Blog
Last Week in AI
Last Week in AI
雷峰网
雷峰网
月光博客
月光博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Apple Machine Learning Research
Apple Machine Learning Research
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
SegmentFault 最新的问题
美团技术团队
Hugging Face - Blog
Hugging Face - Blog
WordPress大学
WordPress大学
宝玉的分享
宝玉的分享
爱范儿
爱范儿
博客园 - 聂微东
量子位
J
Java Code Geeks
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Vercel News
Vercel News

博客园 - gengen

asp.net程序中最常用的三十三种编程代码 js+xml dataset读取xml 下拉 flash实现 js+xml DataList分页(与Repeater控件的例子相似,都以pubs数据库中的authors为例) 简单上传 Datalist分页 datagrid 绑定与简单分页 asp.net 常用文件上传下载 转的 批量删除 移动控件 可拖放控件的使用 国家公务员考完了 RegularExpressionValidator 网页中提交按钮倒记时的实现 原作:mlg js技巧 WEB标准开发中的一些基本用法(连载中...)
javascript中模拟hashtable对数组进行快速查找
gengen · 2006-09-28 · via 博客园 - gengen

    面对一个数组,有时候希望能够直接访问一个特定元素,而不是对整个数组循环来查找该元素。想想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的变量值的唯一性,这样才能保证访问到每一个元素。如果对象的一个属性不能保证唯一性,可以考虑多个属性的合并值