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?
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')
ECMA2016 réponse la plus courte, particulièrement bonne lors de la vérification de plusieurs valeurs:
if (!["A","B", ...].includes(test)) {}
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.
Je le fais en utilisant jQuery
if ( 0 > $.inArray( test, [a,b] ) ) { ... }
var test = $("#test").val();
if (test != 'A' && test != 'B'){
do stuff;
}
else {
do other stuff;
}
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;
}
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 {
}