Как проверить, что переменная не равна ни одному из двух значений? - PullRequest
38 голосов
/ 24 мая 2011

Я хочу написать оператор if / else, который проверяет, не равно ли значение текстового ввода одному из двух разных значений. Вот так (извините за мой псевдо-английский код):

var test = $("#test").val();
if (test does not equal A or B){
    do stuff;
}
else {
    do other stuff;
}

Как написать условие для оператора if в строке 2?

Ответы [ 7 ]

110 голосов
/ 24 мая 2011

Думайте о ! (оператор отрицания) как "не", || (булево-или-оператор) как "или" и && (булево-и-оператор) как "и".См. Операторы и Приоритет оператора .

Таким образом:

if(!(a || b)) {
  // means neither a nor b
}

Однако, используя Закон де Моргана , он можетзаписывается как:

if(!a && !b) {
  // is not a and is not b
}

a и b выше может быть любым выражением (например, test == 'B' или любым другим).

Еще раз, если test == 'A' и test == 'B', являются выражениями, обратите внимание на расширение 1-й формы:

// if(!(a || b)) 
if(!((test == 'A') || (test == 'B')))
// or more simply, removing the inner parenthesis as
// || and && have a lower precedence than comparison and negation operators
if(!(test == 'A' || test == 'B'))
// and using DeMorgan's, we can turn this into
// this is the same as substituting into if(!a && !b)
if(!(test == 'A') && !(test == 'B'))
// and this can be simplified as !(x == y) is the same as (x != y)
if(test != 'A' && test != 'B')
24 голосов
/ 24 мая 2017

ECMA2016 Кратчайший ответ, особенно хорош при проверке повторных значений:

if (!["A","B", ...].includes(test)) {}
8 голосов
/ 24 мая 2011

В общем случае это будет примерно так:

if(test != "A" && test != "B")

Возможно, вам следует прочитать логические операторы JavaScript.

2 голосов
/ 24 мая 2011

Я делаю это, используя jQuery

if ( 0 > $.inArray( test, [a,b] ) ) { ... }
1 голос
/ 24 мая 2011

Вы использовали слово «или» в своем псевдокоде, но, думаю, на основании вашего первого предложения вы имеете в виду и. В этом было некоторое замешательство, потому что люди обычно так не говорят.

Вы хотите:

var test = $("#test").val();
if (test !== 'A' && test !== 'B'){
    do stuff;
}
else {
    do other stuff;
}
1 голос
/ 24 мая 2011
var test = $("#test").val();
if (test != 'A' && test != 'B'){
    do stuff;
}
else {
    do other stuff;
}
0 голосов
/ 15 марта 2018

Могу ли я предложить использовать выражение else if в вашем выражении if / else. И если вы не хотите запускать какой-либо код, который не выполняется ни при каких условиях, вы можете просто опустить остальное в конце оператора. иначе if может также использоваться для любого количества путей отвлечения, для которых необходимо, чтобы для каждого было определенное условие.

if (условие 1) {

} иначе if (условие 2) {

} еще {

}

...