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