Javascript 跨多个if/then语句设置变量

Javascript 跨多个if/then语句设置变量,javascript,if-statement,Javascript,If Statement,我正在使用JS根据条件语句设置总共7个变量,并寻找最有效的方法 目前,有16个不同的条件,如果您愿意的话,它们实际上被分为3个不同的类别,每个类别包含多个条件,但其中一个特定条件在类别中保持不变。此外,有一个变量必须在所有条件下保持一致 下面是一个例子: if (myvar === "A" && var1 === 1 && var2 ==="1") { setVar = "Value"; } else if (myvar

我正在使用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";
    }

您可以简单地将其他条件包装在重复条件中:

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

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

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

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

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

将控制变量放入换行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;
    }
}
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;
    }
}
您可以通过将
myvar
检查移动到三元运算符中来进一步压缩此语句,但我只建议在有两种变体的情况下:

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

将控制变量放入包装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;
    }
}
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;
    }
}
您可以通过将
myvar
检查移动到三元运算符中来进一步压缩此语句,但我只建议在有两种变体的情况下:

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

最后3个条件都是相同的。那是打字错误吗?
var1
的值是否应更改为1、2和3?最后3个条件都相同。那是打字错误吗?
var1
的值是否应更改为1、2和3?此处不能使用三元运算符-myvar!=A不是===B@LTPCGO这就是为什么我特别说
我只建议如果有两个变体
即使有两个预期变体,没有额外的代码也不是一个好主意;可能带有前缀行,如
if(myvar!=“a”&&myvar!=“B”)myvar=“B”但这并不会让代码变得有意义clearer@LTPCGO您只需将检查移动到包装子句中,例如,
if(myvar==“a”| | myvar==“B”)
。如果返回false,则抛出错误。此处不能使用三元运算符-myvar!=A不是===B@LTPCGO这就是为什么我特别说
我只建议如果有两个变体
即使有两个预期变体,没有额外的代码也不是一个好主意;可能带有前缀行,如
if(myvar!=“a”&&myvar!=“B”)myvar=“B”但这并不会让代码变得有意义clearer@LTPCGO您只需将检查移动到包装子句中,例如,
if(myvar==“a”| | myvar==“B”)
。如果返回false,则抛出错误。