wake-up-neo.net

Wie teste ich, ob eine Variable keinem der zwei Werte entspricht?

Ich möchte eine if/else-Anweisung schreiben, die testet, ob der Wert einer Texteingabe NICHT mit einem von zwei verschiedenen Werten übereinstimmt. So (Entschuldigen Sie meinen pseudo-englischen Code):

 var test = $ ("# test"). val (); 
 if (test ist nicht gleich A oder B) {
 erledige Sachen; 
} 
 sonst {
 mache andere Sachen; 
} 

Wie schreibe ich die Bedingung für die if-Anweisung in Zeile 2?

35
daGUY

Stellen Sie sich ! (Negationsoperator) als "nicht" vor, || (Boolescher Operator) als "oder" und && (Boolescher Operator) als "und". Siehe Operatoren und Operatorvorrang .

Somit:

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

Unter Verwendung von De Morgans Law könnte es jedoch wie folgt geschrieben werden:

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

Bei a und b kann es sich um einen beliebigen Ausdruck handeln (z. B. test == 'B' oder was auch immer es sein muss).

Wenn test == 'A' und test == 'B' die Ausdrücke sind, beachten Sie die Erweiterung des 1. Formulars:

// 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 Kürzeste Antwort, besonders gut bei der Überprüfung mehrerer Werte:

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

Im Allgemeinen würde es so aussehen:

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

Sie sollten sich wahrscheinlich mit den logischen Operatoren von JavaScript vertraut machen.

8
James Montagne

Ich mache das mit jQuery

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

Sie haben das Wort "oder" in Ihrem Pseudocode verwendet, aber basierend auf Ihrem ersten Satz denke ich, Sie meinen und Es gab einige Verwirrung darüber, weil die Leute normalerweise nicht so sprechen.

Sie wollen:

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

Darf ich vorschlagen, die if-else-Anweisung in else zu verwenden. Und wenn Sie keinen Code ausführen möchten, der unter keinen Umständen gewünscht wird, können Sie den anderen Code am Ende der Anweisung einfach weglassen. else if kann auch für eine beliebige Anzahl von Umleitungspfaden verwendet werden, für die jeweils eine bestimmte Bedingung erforderlich ist.

if (Bedingung 1) {

} else if (Bedingung 2) {

} else {

}

0
JohnnyBoyy