Как проверить, если переменная не равна ни одному из двух значений?

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

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

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

7 ответов


думать ! (оператор отрицания), как "не", || (логический оператор или) как "или" и && (логический оператор и) как "и". См.операторы и Приоритет Операторов.

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

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')

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

if (!["A","B", ...].includes(test)) {}

В общем, это будет что-то вроде этого:

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

вы, вероятно, должны прочитать о логических операторах JavaScript.


Я делаю это с помощью jQuery

if ( 0 > $.inArray( test, [a,b] ) ) { ... }

var test = $("#test").val();
if (test != 'A' && test != 'B'){
    do stuff;
}
else {
    do other stuff;
}

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

вы хотите:

var test = $("#test").val();
if (test !== 'A' && test !== 'B'){
    do stuff;
}
else {
    do other stuff;
}

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

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

} else if (условие 2) {

}else {

}