【问题标题】:What condition is false in a multiple conditions if statement多条件if语句中什么条件为假
【发布时间】:2015-03-14 03:30:14
【问题描述】:

我正在用 Javascript 编写一个多重 if 语句。我有 3 个(或更多)条件,只有当所有这 3 个条件都为真时,我才想做 doSomething()。如果这 3 个中只有一个是错误的,我想要 doSomethingElse()。我认为我的代码是正确的,但我的问题在另一个层面。 如果我想知道我的陈述在哪种情况下是错误的怎么办? 例如:条件1=真、条件2=真、条件3=假。

if (condition1 && condition2 && condition3) {
  doSomething();
} else {
  doSomethingElse();
};

我认为我可以在 else 部分添加另一个 if 语句。

if (condition1 && condition2 && condition3) {
  doSomething();
} else {
  if (condition1 == false) {
    doWhatIDoWhenC1isFalse();
  };
};

这是正确的方法吗?有没有其他方法可以做到这一点?也许更快的方式! 感谢您的帮助,对我好一点,这是我学习 Javascript 的第二天 :)

【问题讨论】:

  • 抱歉,有点不清楚...如果 cond1,cond2 为真,cond3 为假,您想使用一个函数,否则使用另一个函数?
  • 是的,你是对的,你必须手动测试“有趣”的条件。没有其他方法可以知道。
  • 您可以创建一个包含所有“条件”的数组,并使用该数组只取出那些为假的,但如果您谈论的是 3 个左右的条件,那么您表达它的方式就是最快的...
  • 如果所有条件都为假,则执行doWhatIDoWhenC1isFalse,而您想知道是否只有一个条件为假
  • 你可以试试....elseif (condition1 + condition2 + condition3 == 2) 应该可以,但是...不太合乎逻辑

标签: javascript if-statement conditional-statements


【解决方案1】:

由于条件是互斥的,您可以只使用else if 而无需嵌套。

if (condition1 && condition2 && condition3) {
    doSomething();
} else if (!condition1) {
    doWhatIDoWhenC1isFalse();
}
// add more else-if conditions as needed

如果一次只能有一个条件为假(或者如果您不在乎其中两个为假),那么您可以只使用三个 else-if 子句并单独检查每个条件。如果您确实需要分别处理两个条件为假的情况,则需要为每个组合使用 else-if。如果是这种情况,请密切注意列出它们的顺序。检查两个条件是否都为假的情况应该在只检查一个条件的情况之前。

【讨论】:

  • 只有一个假条件也可能是条件2,或者条件3,那么……?
  • @BhojendraSah 然后添加更多其他内容,如果如评论中所述,或者您可以在控制台中输出每个条件,看看哪个是真的,哪个是假
  • 我想我们明白了 :) 谢谢!
【解决方案2】:
if (condition1 && condition2 && condition3) {
  doSomething();
}else if (!condition1){
  doWhatIDoWhenC1isFalse();
}else if (!condition2){
  doWhatIDoWhenC2isFalse();
}else{
  doWhatIDoWhenC3isFalse();
}

你必须按照这个思路做一些事情。无法清楚地获取失败的表达式。

【讨论】:

    【解决方案3】:

    如果有任何一个条件为假,你可以这样走:

    if ((!condition1 && condition2 && condition3)||
       (condition1 && !condition2 && condition3)||
       (condition1 && condition2 && !condition3)) 
    {
       doSomethingElse();      
    } else {
      doSomething();
    };
    

    【讨论】:

    • 如果这 3 个都是真的呢?
    • 如何回答“如果我想知道我的陈述在哪种情况下是错误的怎么办?” ?
    • @BhojendraSah 哦,对了,我没注意到你倒了 doSomething 和 doSomethingElse,我的错
    【解决方案4】:

    可以是:

    var x = []; /* an array that will take expressions number that result true */
    
    if(condition1) x.push(1);
    if(condition2) x.push(2);
    if(condition3) x.push(3);
    
    
    if( x.length == 2 ){ /* if two conditions got true */
        doThingForTwoTrue();
    }
    if( x.length == 3 ){ /* if three conditions got true */
        doThingForThreeTrue();
    }
    if( x.indexOf(1) !== -1 ){ /* if condition1 got true */
        doThingOne();
    }
    

    【讨论】:

      猜你喜欢
      • 2021-10-14
      • 1970-01-01
      • 1970-01-01
      • 2020-12-10
      • 1970-01-01
      • 2018-12-19
      • 2013-12-17
      • 2014-02-17
      • 2023-04-04
      相关资源
      最近更新 更多