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