多个if语句的替代方案?

时间:2016-08-03 12:52:01

标签: 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")
}

什么是避免所有这些ifs的好方法?

编辑:这些字符串实际上并没有被称为Val1 ... val13(我用它作为例子,可能令人困惑,抱歉)。

1 个答案:

答案 0 :(得分:3)

在这种情况下,我可能会使用一个数组和一个循环:

let vals = [];
for (let i = 1; i <= 13; ++i) {
    let name = "val" + i;
    if (foo(name)) {
        vals[i - 1] = foo(name);
    }
}

请注意,如果您分配给以后的索引而未分配给较早的索引,则最终会得到稀疏数组。 E.g:

let a = [];
a[2] = "two";

... a没有0或1 的条目。 (但访问它们会为您提供值undefined。)