我使用switch语句处理超过20个案例。它有一种方法可以最小化长开关语句,例如,如下所示:
switch (something) {
case 1:
doX();
break;
case 2:
doY();
break;
case 3:
doN();
break;
// And so on...
}
修改
正如所有人都在问我必须澄清这是一个javascript问题。
答案 0 :(得分:0)
您只提供了伪代码。您应该提供实际的代码,以便我可以更好地指导您。无论如何,您可以使用以下简短形式进行长期交换声明。
var cases = {
1: doX,
2: doY,
3: doN
//......................cases from 4 to 19
20: doZ
};
if (cases[something]) {
cases[something]();
}
希望它有所帮助。
答案 1 :(得分:0)
如果某些任务相同,则可以使用。例如:如果对于案例1和案例10,同样的方法doX()
发生,您可以这样做:
switch (something) {
case 1:
case 10:
doX();
break;
//...
}
此外,如果你有一个共同的任务,你会在很多情况下完成,例如12,13,14,15和16,doA()
将被执行。让它成为default
案例。它会减少写很多案例。
switch (something) {
// for case 12, 13, 14, 15, 16
default:
doA();
break;
}
答案 2 :(得分:0)
您可以使用ES6 Map功能创建功能映射,然后只需使用动态键值调用它。
var myMap = new Map(),
doX = n => console.log(n),
doY = n => console.log(n*2),
doN = n => console.log(n/2),
something = 2;
myMap.set(1,doX)
.set(2,doY)
.set(3,doN);
myMap.get(something)(4);

同样可以由普通对象实现,如
var myMap = {},
doX = n => console.log(n),
doY = n => console.log(n*2),
doN = n => console.log(n/2),
something = 3;
myMap[1] = doX;
myMap[2] = doY;
myMap[3] = doN;
myMap[something](4);