Javascript 多个if语句的替代方案?
这感觉既低效又丑陋:Javascript 多个if语句的替代方案?,javascript,ecmascript-6,Javascript,Ecmascript 6,这感觉既低效又丑陋: if(foo("val1")) { let val1 = foo("val1") } if(foo("val2")) { let val2 = foo("val2") } /* more IFs */ if(foo("val13")) { let val13 = foo("val13") } 什么是避免所有这些“如果”的好方法 编辑:字符串实际上并不是称为Val1。。。val13(我以它为例,很抱歉,可能会让人困惑)。在这种情况下,我可能会使
if(foo("val1")) {
let val1 = foo("val1")
}
if(foo("val2")) {
let val2 = foo("val2")
}
/* more IFs */
if(foo("val13")) {
let val13 = foo("val13")
}
什么是避免所有这些“如果”的好方法
编辑:字符串实际上并不是称为Val1。。。val13(我以它为例,很抱歉,可能会让人困惑)。在这种情况下,我可能会使用数组和循环:
let vals = [];
for (let i = 1; i <= 13; ++i) {
let name = "val" + i;
if (foo(name)) {
vals[i - 1] = foo(name);
}
}
…
a
根本没有0或1的条目。(访问它们会给您提供值未定义的。如果foo(“valXX”)
为false,您会在valXX
中输入什么?任何东西?旁注:让
是块范围的,所以你可能想声明那些在if
之外的,除非你真的只在if
块中使用它们。@Hevar我在这里没有看到任何React
相关的代码。你考虑过使用数组吗?有13个名为val1
的变量有什么意义。。。,val13
?所以类似于const values=['val1','val2','val3']的东西。map(foo)
也可以解决这个问题?@Hevar这是我的建议-它比生成这样的值要好得多,我觉得你的问题有点过于字面化了think@Hevar:这与你的问题有所不同(并且依赖于foo
只关注它的第一个参数),但是当然可以很好地完成你想要做的事情。你还没有告诉我们你实际上想要做什么,所以。。。
let a = [];
a[2] = "two";