js 查表法

当有大量离散值需要测试时,使用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更适合于每个键需要一个独特的动作或一系列动作的场合

转载于:https://www.cnblogs.com/bin1991/p/3636646.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值