Comment tester si une variable n'est pas égale à l'une des deux valeurs?

Je veux écrire une instruction if/else qui teste si la valeur d'une entrée de texte n'est pas égale à l'une ou l'autre des deux valeurs différentes. Comme ceci (excusez mon code pseudo-anglais):

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

Comment écrire la condition pour l'instruction if à la ligne 2?

33
demandé sur daGUY 2011-05-24 23:29:44

7 réponses

Pensez à ! (opérateur de négation) comme "non", || (opérateur booléen-ou) comme " ou "et && (opérateur booléen-et) comme "et". Voir opérateurs etpréséance de L'opérateur .

Ainsi:

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

Cependant, en utilisant la Loi de de Morgan , Il pourrait être écrit comme:

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

a et b ci-dessus peut être n'importe quelle expression (comme test == 'B', ou ce qu'il doit être).

Encore une fois, si test == 'A' et test == 'B', sont les expressions, notez l'expansion de la 1ère forme:

// 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')
99
répondu Michał Perłakowski 2017-01-06 20:51:37

ECMA2016 réponse la plus courte, particulièrement bonne lors de la vérification de plusieurs valeurs:

if (!["A","B", ...].includes(test)) {}
19
répondu CESCO 2017-05-29 23:21:34

En général, ce serait quelque chose comme ceci:

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

Vous devriez probablement lire sur les opérateurs logiques JavaScript.

8
répondu James Montagne 2016-10-16 14:56:34

Je le fais en utilisant jQuery

if ( 0 > $.inArray( test, [a,b] ) ) { ... }
2
répondu Zlatev 2011-05-28 22:10:50
var test = $("#test").val();
if (test != 'A' && test != 'B'){
    do stuff;
}
else {
    do other stuff;
}
1
répondu AlbertVo 2011-05-24 19:38:32

Vous avez utilisé le mot "ou" dans votre pseudo code, mais en fonction de votre première phrase, je pense que vous voulez dire et. Il y avait une certaine confusion à ce sujet parce que ce n'est pas la façon dont les gens parlent habituellement.

Vous voulez:

var test = $("#test").val();
if (test !== 'A' && test !== 'B'){
    do stuff;
}
else {
    do other stuff;
}
1
répondu sophistihip 2016-10-13 10:27:13

Puis-je suggérer d'essayer d'utiliser l'instruction in else if dans votre instruction if/else. Et si vous ne voulez pas exécuter de code qui ne soit pas dans les conditions que vous voulez, vous pouvez simplement laisser l'autre à la fin de l'instruction. sinon, si peut également être utilisé pour un certain nombre de chemins de détournement qui ont besoin que les choses soient une certaine condition pour chacun.

Si(condition 1){

} else if (condition 2) {

}else {

}

0
répondu JohnnyBoyy 2018-03-15 13:54:27