oco*_*mfd 8 javascript if-statement
例如,假设我需要根据布尔值的组合执行不同的操作:cond_0,cond_1和cond_2:
cond_0 cond_1 cond_2
false false false a();
false false true b();
.
.
.
true true true h();
Run Code Online (Sandbox Code Playgroud)
它看起来好像将位数映射到函数:
000:a()
001:b()
.
.
.
111:h()
Run Code Online (Sandbox Code Playgroud)
虽然一般规则看起来很简单,但我不知道如何在没有if-else的情况下编写它,当前的表单看起来像这样:
var f=function(cond_0,cond_1,cond_2){
if(!cond_0 && !cond_1 && !cond_2){
a();
}else if( cond_0 && !cond_1 && !cond_2)){
b();
}else if(!cond_0 && cond_1 && !cond_2)){
c();
}else if( cond_0 && cond_1 && !cond_2)){
d();
}else if(!cond_0 && !cond_1 && cond_2)){
e();
}else if( cond_0 && !cond_1 && cond_2)){
f();
}else if(!cond_0 && cond_1 && cond_2)){
g();
}else if( cond_0 && cond_1 && cond_2)){
h();
}
}
Run Code Online (Sandbox Code Playgroud)
这很长很难读.当添加一个新的布尔条件cond_3时,修改代码是很可怕的:
if(!cond_0 && !cond_1 && !cond_2 && !cond_3){
a();
}else if( cond_0 && !cond_1 && !cond_2 !cond_3)){
b();
}
.
.
.
Run Code Online (Sandbox Code Playgroud)
有没有办法消除if else,这样cond_0,cond_1和cond_2只能在函数内部出现一次,并且在添加cond_3时也很容易添加新函数?我想要的东西:
var f=function(cond_0,cond_1,cond_2){
var magic=(000:a,001:b,010:c...);
magic(cond_0,cond_1,cond_2)();
}
Run Code Online (Sandbox Code Playgroud)
因为true数字是 1,true * 2是 2,等等......可能是这样的:
function f(c0, c1, c2) { [a, b, c, d, e, f, g, h][+c0 +c1 * 2 +c2 * 4](); } // magic
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
180 次 |
| 最近记录: |