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";