现在的位置: 首页 > 综合 > 正文

js 查表法

2014年08月29日 ⁄ 综合 ⁄ 共 943字 ⁄ 字号 评论关闭

当有大量离散值需要测试时,使用if和switch都比使用查表法要慢得多。在JavaScript中查表法可通过数组或普通对象实现,查表法访问数据比if和switch更快,特别是当条件体的数目很大时。与if和switch相比,查表法不仅非常快,而且当需要测试的离散值数量非常大时,也有助于保持代码的可读性。

例如,在下面代码中,使用switch检测value值。

  1. switch(value) {  
  2.     case 0:  
  3.         return result0;  
  4.     case 1:  
  5.         return result1;  
  6.     case 2:  
  7.         return result2;  
  8.     case 3:  
  9.         return result3;  
  10.     case 4:  
  11.         return result4;  
  12.     case 5:  
  13.         return result5;  
  14.     case 6:  
  15.         return result6;  
  16.     case 7:  
  17.         return result7;  
  18.     case 8:  
  19.         return result8;  
  20.     case 9:  
  21.         return result9;  
  22.     default:  
  23.         return result10;  

使用switch结构检测value值的代码所占的空间可能与switch的重要性不成比例,代码很笨重。整个结构可以用一个数组查询替代:

  1. var results = [result0, result1, result2, result3, 
    result4, result5, result6, result7, result8, result9, result10]  
  2. return results[value]; 

当使用查表法时,必须完全消除所有条件判断。操作转换成一个数组项查询或一个对象成员查询。使用查表法的一个主要优点:由于没有条件判断,当候选值数量增加时,基本上不会增加额外的性能开销。查表法常用于一个键和一个值形成逻辑映射的领域,而switch更适合于每个键需要一个独特的动作或一系列动作的场合

抱歉!评论已关闭.