在jquery if语句中使用OR运算符

时间:2016-10-24 15:21:16

标签: jquery if-statement operators

我需要在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;

由于

4 个答案:

答案 0 :(得分:14)

想想

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(以及你或者声明中的其余数字),这可能是假的唯一方法,这是不可能的

因此,此语句始终为真。例如,状态15永远不会等于状态10,所以总是为真,state将不等于10或不等于15。

||更改为&&

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

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

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

return x;

答案 1 :(得分:4)

您编写的代码将始终返回true,因为state不能同时为10和15,以使该语句为false。您需要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;
}

答案 2 :(得分:1)

逻辑OR' ||'如果一旦满足真实条件,则自动短路。

false || false ||是的 || false = true ,在第二个条件停止。

另一方面,逻辑AND&&&'如果一旦遇到错误情况,则自动短路。

false&&真的&&真实&& true = false ,在第一个条件停止。

答案 3 :(得分:0)

更新:使用.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");