【问题标题】:Using OR operator in a jQuery if statement在 jQuery if 语句中使用 OR 运算符
【发布时间】:2017-03-06 10:36:38
【问题描述】:

我需要在 jQuery if 语句中使用 OR 运算符来过滤掉 10 个状态。我的代码只能排除一个状态,但当我尝试包含多个状态时会失败。有正确的方法吗?

我正在使用的代码:

if ((state != 10) || (state != 15) || (state != 19) || 
    (state != 22) || (state != 33) || (state != 39) || 
    (state != 47) || (state != 48) || (state != 49) || 
    (state != 51)) 
   return true;

【问题讨论】:

  • 你可能的意思是和?
  • @aw04 是的!使用 AND 运算符有效。在我发布这个问题之前我应该​​尝试过这个。其他答案很高兴知道,但这是最简单的解决方案。谢谢

标签: jquery if-statement operators


【解决方案1】:

想一想

if ((state != 10) || (state != 15) || (state != 19) || (state != 22) || (state != 33) || (state != 39) || (state != 47) || (state != 48) || (state != 49) || (state != 51))

的意思。 || 表示“或”。对此的否定是(根据德摩根定律):

state == 10 && state == 15 && state == 19...

换句话说,这可能是错误的唯一方法是 state 同时等于 10、15 和 19(以及您的 or 语句中的其余数字),这是不可能的。

因此,此陈述将始终为真。例如,状态 15 永远不会等于状态 10,所以 总是state 要么不等于 10,要么不等于 15。

|| 更改为&&

此外,在大多数语言中,以下内容:

if (x) {
  return true;
}
else {
  return false;
}

没有必要。在这种情况下,当x 为真时,该方法返回true,而当xfalse 时,该方法返回false。你可以这样做:

return x;

【讨论】:

    【解决方案2】:

    您编写的代码将始终返回 true,因为 state 不能同时为 10 和 15 才能使语句为假。 if ((state != 10) && (state != 15).... AND 是你不需要的 OR

    请改用$.inArray。这将返回数组中元素的索引。

    JSFIDDLE DEMO

    var statesArray = [10, 15, 19]; // list out all
    
    var index = $.inArray(state, statesArray);
    
    if(index == -1) {
        console.log("Not there in array");
        return true;
    
    } else {
        console.log("Found it");
        return false;
    }
    

    【讨论】:

    • 这是一个很好的选择,但你甚至没有提到发布代码的问题......这个答案可能只会让 OP 感到困惑
    【解决方案3】:

    更新:使用.indexOf() 检测stat 值是否为arr 元素之一

    纯 JavaScript

    var arr = [20,30,40,50,60,70,80,90,100];
    //or detect equal to all
    //var arr = [10,10,10,10,10,10,10];
        var stat = 10;
    
    if(arr.indexOf(stat)==-1)alert("stat is not equal to one more elements of array");

    【讨论】:

    • 当问题是一个简单的逻辑错误时,这个答案似乎完全过于复杂
    • 更新为使用indexOf()的示例
    【解决方案4】:

    逻辑 OR '||'一次满足真条件就自动短路。

    假 || 假 ||真的 || false = true,在第二个条件下停止。

    另一方面,如果逻辑 AND '&&' 满足一次错误条件,则会自动短路。

    false && true && true && true = false,在第一个条件下停止。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-27
      • 1970-01-01
      • 2012-02-22
      • 2018-04-23
      • 2017-12-04
      • 2021-06-20
      相关资源
      最近更新 更多