如何在JavaScript中组合不同的条件?

时间:2019-06-11 22:04:57

标签: javascript angular if-statement conditional-statements

所以我正在制作一款根据选择的颜色浸透领域的游戏,我有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中。也许为此创建一些功能?

3 个答案:

答案 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]) {
       //....
  }
}