javascript - 比较条件对

标签 javascript if-statement comparison conditional-statements

有没有一种简单的方法可以比较条件对而无需嵌套 if/else 语句?换句话说,如何将以下两个比较合并为一个比较?

(x >= 6 && y <= 5) , (y >= 6 && x <= 5)

我想做的是这样的:

if ((x >= 6 && y <= 5) || (y >= 6 && x <=5)) // do this

我知道你可以像这样完成这个:

if (x >= 6) {
  if (y <= 5)
} else {
  if (y >= 6)
}

但是这种方法的问题是我想针对每种情况执行相同的代码块。我知道我可以通过执行以下操作来实现此目的,而无需重复代码:

if (x >= 6) {
  if (y <= 5) doThis();
} else {
  if (y >= 6) doThis();
}

但是,这一切看起来都很冗长。有更好的办法吗?

最佳答案

xy是整数,您可以将两个比较结合起来:

if (x >= 6 === y <= 5) {
    ...
}

如果两边都为真或都为假,则该条件为真。


这是对此答案的解释。

  1. 最初的问题是简化这个条件:
(x >= 6 && y <= 5) || (x <= 5 && y >= 6)
  • 对于整数,x <= 5x >= 6 相反(同样适用于 y);因此我们可以将条件写为:
  • (x >= 6 && y <= 5) || (!(x >= 6) && !(y <= 5))
    
  • 我们可以定义 bool 变量以使其清晰:
  • let cond1 = x >= 6;
    let cond2 = y <= 5;
    
    (cond1 && cond2) || (!cond1 && !cond2)
    
  • 也可以写成如下:
  • (cond1 === true && cond2 === true) || (cond1 === false && cond2 === false)
    
  • truefalse是唯一可能的值,前一行相当于
  • (cond1 === cond2)
    
  • 放回变量的原始表达式:
  • ((x >= 6) === (y <= 5))
    
  • 自运营商 >=<=higher precedence=== ,可以去掉里面的括号:
  • (x >= 6 === y <= 5)
    

    关于javascript - 比较条件对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44691619/

    相关文章:

    javascript - 正则表达式负向预测不包括整个 block

    perl - 如何使用 Perl 的三元条件运算符构造单词的复数形式?

    javascript - 比较 HTML 表单中 Javascript 中的两个日期

    java - 判断哪个版本性能更好的最简单直接的方法是什么?

    javascript - 设定时间后刷新随机图像

    javascript - Vue.js webkit语音识别集成

    javascript - 将 Vue.js 输入发送到 Flask 后端?

    ios - 函数中缺少 return

    c - 可扩展的 if 语句条件

    xml - 如何比较 XML 文档