Javascript 跨多个if/then语句设置变量
我正在使用JS根据条件语句设置总共7个变量,并寻找最有效的方法 目前,有16个不同的条件,如果您愿意的话,它们实际上被分为3个不同的类别,每个类别包含多个条件,但其中一个特定条件在类别中保持不变。此外,有一个变量必须在所有条件下保持一致 下面是一个例子: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
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,则抛出错误。