我们知道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遍历下去的循环体也可以用这样的优化方案,结果是一样的