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

推荐订阅源

V
Visual Studio Blog
量子位
大猫的无限游戏
大猫的无限游戏
Hugging Face - Blog
Hugging Face - Blog
S
SegmentFault 最新的问题
Blog — PlanetScale
Blog — PlanetScale
月光博客
月光博客
Google DeepMind News
Google DeepMind News
小众软件
小众软件
WordPress大学
WordPress大学
宝玉的分享
宝玉的分享
MongoDB | Blog
MongoDB | Blog
B
Blog RSS Feed
博客园 - Franky
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog
博客园 - 聂微东
The GitHub Blog
The GitHub Blog
Recent Announcements
Recent Announcements
Y
Y Combinator Blog
Microsoft Security Blog
Microsoft Security Blog
雷峰网
雷峰网
Jina AI
Jina AI
酷 壳 – CoolShell
酷 壳 – CoolShell

博客园 - 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的变量值的唯一性,这样才能保证访问到每一个元素。如果对象的一个属性不能保证唯一性,可以考虑多个属性的合并值