所以我正在制作一款根据选择的颜色浸透领域的游戏,我有4种不同的条件:
let condition1 = drenchX + 1 === mixedX && drenchY === mixedY && this.mixedFields[i].style.backgroundColor === this.service.clickedColor;
let condition2 = drenchX === mixedX && drenchY + 1 === mixedY && this.mixedFields[i].style.backgroundColor === this.service.clickedColor;
let condition3 = drenchX - 1 === mixedX && drenchY === mixedY && this.mixedFields[i].style.backgroundColor === this.service.clickedColor;
let condition4 = drenchX === mixedX && drenchY - 1 === mixedY && this.mixedFields[i].style.backgroundColor === this.service.clickedColor;
我需要获得此条件的所有可能组合,它们全部4个都可以是真实的,或者3或2或仅一个。 这很好,但我认为它太长了。 我的if语句如下:
if((condition1 && condition2 && condition3 && condition4) || (condition1 && condition2 && condition3) || (condition1 && condition2 && condition4) || (condition1 && condition3 && condition4) || (condition2 && condition3 && condition4) || (condition1 && condition2) || (condition1 && condition3) || (condition1 && condition4) || (condition2 && condition3) || (condition2 && condition4) || (condition3 && condition4) || condition1 || condition2 || condition3 || condition4) {
// some action
}
这一切都工作得很好,但我正在寻找一个更短的解决方案,而我仍然是一个初学者。因此,如果有人知道做这件事的更好方法,那就太好了,我的发言太长了,看起来一点也不好。 顺便说一句,项目在Angular中。也许为此创建一些功能?
答案 0 :(得分:2)
如果a && b
为true,则a || b
也为true。就是说,这意味着您的状况可以
if (condition1 || condition2 || condition3 || condition4)
答案 1 :(得分:0)
如果我理解正确,则if语句正在检查是否满足任何条件。因此,这应该可以解决问题:
if(condition1 ||
condition2 ||
condition3 ||
condition4)
{
//some action
}
答案 2 :(得分:0)
感谢大家的建议,但我找到了一种简化方法。我将条件存储到数组中,并用于遍历所有可能的条件。
let conditionalArray: boolean[] = [condition1, condition2, condition3, condition4];
for(let c in conditionalArray){
if(conditionalArray[c]) {
//....
}
}