web-dev-qa-db-fra.com

Comment puis-je 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 NE correspond PAS à l'une des deux valeurs différentes. Comme ceci (excusez mon code pseudo-anglais):

 var test = $ ("# test"). val (); 
 if (le test n'est pas égal à A ou B) {
 faire des choses; 
} 
 else {
 faire d'autres choses; 
} 

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

35
daGUY

Pensez à ! (opérateur de négation) comme "pas", || (opérateur booléen) à "ou" et && (opérateur booléen) à "et". Voir Opérateurs et Priorité des opérateurs .

Ainsi:

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

Cependant, en utilisant la loi de De Morgan , il pourrait s’écrire comme suit:

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

a et b ci-dessus peuvent être n'importe quelle expression (telle que test == 'B' ou quoi que ce soit nécessaire).

Encore une fois, si test == 'A' et test == 'B' sont les expressions, notez le développement 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')
105
user166390

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

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

En général ce serait quelque chose comme ça:

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

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

8
James Montagne

Je le fais en utilisant jQuery

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

Vous avez utilisé le mot "ou" dans votre pseudo-code, mais sur la base 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 ainsi que les gens parlent habituellement.

Tu veux:

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

Puis-je suggérer d'essayer d'utiliser une autre déclaration if si dans votre déclaration if/else. Et si vous ne voulez pas exécuter de code qui ne soit sous aucune condition, vous pouvez simplement laisser le reste à la fin de la déclaration. else if peut également être utilisé pour un nombre quelconque de chemins de déviation pour lesquels certaines conditions doivent être remplies.

si (condition 1) {

} sinon si (condition 2) {

}autre {

}

0
JohnnyBoyy