switch case和else if多匹配优化建议
七娃博客635人阅读
我们知道switch case可以让未知的参数按照规定的方法执行,例如:去一个餐厅吃饭,你说吃大米饭,食堂阿姨就给你打大米饭;你说吃面条,食堂阿姨就给你打面条;又或者吃包子、胡辣汤等等,你想吃的饭就是变量,食堂阿姨提前做好的饭就是case,一个变量对应一个方法这就是Case的用途。
1.场景还原:
可是我们知道的美食有千万种,我不可能每一种都case一次,这代码工程忒大了吧,如下:
switch (key) { case 0: console.log('大米饭'); break; case 1: console.log('面条'); break; case 2: console.log('包子'); break; case 3: console.log('胡辣汤'); break; case 4: console.log('肉夹馍'); break; ...... (食堂阿姨罢工了,不做了) default: break; }
2.优化方案
那么针对多条件筛选能否优化,3到5个case一下没关系,10个百个就有点过分了,例如遍历城市地名的时候,你去case吧,费力不讨好,下面废话不多说,看看优化方法:
网上吵得方法好多种:映射(对象映射、数组映射)、map、双数组,反正各有所长,也各有弊端,有的就喜欢用switch,有的就喜欢if else一直嵌套下去,还是萝卜白菜各有所爱,没办法说谁好谁不好!
const switchMap = { 1:()=>{ console.log('123456') }, 2:()=>{ console.log('abcdef') }, 3:()=>{ console.log('ABCDEF') }, 4:()=>{ console.log('000000') } // .....更多 } let a = 3 ; switchMap[a]();
我个人觉得obj对象映射挺好的,比较清晰简单一点,数组映射会出现各种各样的“事故”,map又添加一堆匹配规则令人头疼,双数组利于下标匹配index和值,也容易出问题。估计和我当前的技术水平有问题吧,站的高度低,眼界就低,或许在大佬眼中,这都是小事,分分钟解决各种bug。
当然一直else if遍历下去的循环体也可以用这样的优化方案,结果是一样的
[…] 之前整理过关于多条件判断的方法:switch case和else if多匹配优化建议,发现不经常使用,也不容易记,今天又逛掘金发现了另一种方法,for循环遍历数组。 […]