在多个if / then语句中设置变量

时间:2019-09-09 17:59:17

标签: javascript if-statement

我正在使用JS根据条件语句设置总共7个变量,并寻找最有效的方法来执行此操作。

当前,如果您将每个类别包含多个条件,但一个特定条件在类别内保持不变,则实际上有16种不同的条件实际上被分为3个不同的类别。另外,有一个变量必须在所有条件下都保持一致

这是一个例子:

if      (myvar === "A" && var1 === 1 && var2 ==="1")
    {
        setVar = "Value";
    }
else if (myvar === "A" && var1 === 2 && var2 ==="1")
    {
        setVar = "Value";
    }
else if (myvar === "A" && var1 === 3 && var2 ==="1")
    {
        setVar = "Value";
    }
else if (myvar === "B" && var1 === 1 && var2 ==="1")
    {
        setVar = "Value";
    }
else if (myvar === "B" && var1 === 1 && var2 ==="1")
    {
        setVar = "Value";
    }
else if (myvar === "B" && var1 === 1 && var2 ==="1")
    {
        setVar = "Value";
    }

有更好的方法吗?我只想设置一次var2的条件,并将其应用于所有条件语句。如果我可以为前三个语句一次设置myvar的值,为最后三个语句一次设置myvar的值,那也更好,这是更好的选择。

if      (myvar === "A" && var1 === 1 && var2 ==="1")
    {
        setVar = "Value";
    }
else if (myvar === "A" && var1 === 2 && var2 ==="1")
    {
        setVar = "Value";
    }
else if (myvar === "A" && var1 === 3 && var2 ==="1")
    {
        setVar = "Value";
    }
else if (myvar === "B" && var1 === 1 && var2 ==="1")
    {
        setVar = "Value";
    }
else if (myvar === "B" && var1 === 1 && var2 ==="1")
    {
        setVar = "Value";
    }
else if (myvar === "B" && var1 === 1 && var2 ==="1")
    {
        setVar = "Value";
    }

2 个答案:

答案 0 :(得分:0)

您只需将其他条件包装在重复的条件中:

if (var2 === "1")
{
    if (myvar === "A" && var1 === 1)
    {
        setVar = "Value";
    }
    else if (myvar === "A" && var1 === 2)
    {
        setVar = "Value";
    }
    else if (myvar === "A" && var1 === 3)
    {
        setVar = "Value";
    }
    else if (myvar === "B" && var1 === 1)
    {
        setVar = "Value";
    }
    else if (myvar === "B" && var1 === 1)
    {
        setVar = "Value";
    }
    else if (myvar === "B" && var1 === 1)
    {
        setVar = "Value";
    }
}

对于其他重叠条件,请根据需要重复此操作。

答案 1 :(得分:0)

将控制变量放入包装的if语句中,然后对变化最大的变量使用switch语句:

if(var2 === "1")
{
    switch(var1)
    {
       case 1:
          if(myvar === "A"){
             setVar = "Value";
          }else if (myvar === "B"){
             setVar = "Value";
          }
          break;

       case 2:
          if(myvar === "A"){
             setVar = "Value";
          }else if (myvar === "B"){
             setVar = "Value";
          }
          break;

       case 3:
          if(myvar === "A"){
             setVar = "Value";
          }else if (myvar === "B"){
             setVar = "Value";
          }
          break;
    }
}

您可以通过将myvar检查移至三元运算符来进一步压缩该语句,但是我只建议存在两种变化的情况:

if(var2 === "1")
{
    switch(var1)
    {
       case 1:
          setVar = myvar === "A" ? "Value" : "Value";
          break;

       case 2:
          setVar = myvar === "A" ? "Value" : "Value";
          break;

       case 3:
          setVar = myvar === "A" ? "Value" : "Value";
          break;
    }
}
相关问题