javascript中模拟hashtable对数组进行快速查找

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

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

      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属性 作为 hashtable key employees[i] 作为value,这样就可以 通过name进行快速查找;
     比如:var BillsAge = employees["Bill"].age;  
    
     注意:上面定义的数组中,很难避免会出现两个 name 重复的元素,那么这时就会出现问题,后加的对象会覆盖掉原来的对象。所以要尽量保证用作 hashtable key 的变量值的唯一性,这样才能保证访问到每一个元素。如果对象的一个属性不能保证唯一性,可以考虑多个属性的合并值

     参考资料:

    (Oreilly)Javascript And Dhtml Cookbook.chm


本文转自一个程序员的自省博客园博客,原文链接:http://www.cnblogs.com/anderslly/archive/2006/09/27/javascripthashtable.html,如需转载请自行联系原作者。

目录
相关文章
|
8天前
|
JavaScript
js【详解】arr.reduce() 数组缩减
【7月更文挑战第12天】
10 1
|
14天前
|
JavaScript API
js【最佳实践】遍历数组的八种方法(含数组遍历 API 的对比)for,forEach,for of,map,filter,reduce,every,some
js【最佳实践】遍历数组的八种方法(含数组遍历 API 的对比)for,forEach,for of,map,filter,reduce,every,some
25 1
|
18天前
|
JavaScript 前端开发 网络架构
JavaScript编码之路【对象的增强、ES6新特性之函数的默认值设置 、rest参数 (剩余参数)、拓展运算符、对象与数组的解构赋值】
JavaScript编码之路【对象的增强、ES6新特性之函数的默认值设置 、rest参数 (剩余参数)、拓展运算符、对象与数组的解构赋值】
21 1
|
18天前
|
JavaScript 前端开发 索引
JavaScript编码之路 【JavaScript之操作数组、字符串方法汇总】(三)
JavaScript编码之路 【JavaScript之操作数组、字符串方法汇总】(三)
20 1
|
14天前
|
JavaScript
JS【数组】交集、差集、补集、并集
JS【数组】交集、差集、补集、并集
10 0
|
14天前
|
JavaScript
JS 【详解】双指针排序 -- 数组合并后递增排序
JS 【详解】双指针排序 -- 数组合并后递增排序
9 0
|
14天前
|
JavaScript API 索引
JS【详解】Set 集合 (含 Set 集合和 Array 数组的区别,Set 的 API,Set 与 Array 的性能对比,Set 的应用场景)
JS【详解】Set 集合 (含 Set 集合和 Array 数组的区别,Set 的 API,Set 与 Array 的性能对比,Set 的应用场景)
30 0
|
15天前
|
JavaScript 索引
js 类数组 转 数组
js 类数组 转 数组
16 0
|
15天前
|
JavaScript
JS数组操作---删除,arr.pop()方法从数组中删除最后一个元素,并返回该元素的值,arr.shift() 删除第一个值,arr.splice()方法,删除指定元素,arr.splice,从第一
JS数组操作---删除,arr.pop()方法从数组中删除最后一个元素,并返回该元素的值,arr.shift() 删除第一个值,arr.splice()方法,删除指定元素,arr.splice,从第一
|
15天前
|
JavaScript
Js,定义数组的方法,let 数组名 = [数据1,数据2,........,数据n],取值方法,数组名[x],arr[0],let sum sum = sum + arr[0],求和的写法,平均值
Js,定义数组的方法,let 数组名 = [数据1,数据2,........,数据n],取值方法,数组名[x],arr[0],let sum sum = sum + arr[0],求和的写法,平均值