Wie verwende ich die ODER-Bedingung in einer JavaScript-IF-Anweisung?


108

Ich verstehe, dass Sie in JavaScript schreiben können:

if (A && B) { do something }

Aber wie implementiere ich einen OP wie:

if (A OR B) { do something }

2
Dies ist übrigens nicht jQuery-spezifisch. Es ist nur eine Javascript-Bibliothek. Ihre Frage ist Javascript-spezifisch.
BalusC

2
@ BalusC sie sind heutzutage praktisch synonym: P
Dolbz

1
@ Dolbz pfooo nicht einverstanden !! : P
Webstars

1
@ Web-Stars hat sich seit 2010 sehr verändert :)
Dolbz

@ Dolbz mmm, oops ...: P Und ich weiß immer noch nichts seit 2010.
Web-Stars

Antworten:



84

Bemerkenswert ist, dass ||auch zurückkehren wird, truewenn BEIDE Aund Bsind true.

Wenn Sie in JavaScript nach Aoder suchen B, aber nicht nach beidem , müssen Sie Folgendes tun:

if( (A && !B) || (B && !A) ) { ... }

Sollte der erste Satz nicht "Bemerkenswert sein, dass || true zurückgibt, wenn entweder var A ODER var B true ist"? Es impliziert, dass das, was Sie erwähnt haben, (wahr | wahr) = wahr ist. das ist üblich und verstanden.
Punith Raj

10
(A &&! B) || (B &&! A) kann durch A ^ B ersetzt werden, was viel glatter ist
void main

1
@ Murplyx: In den meisten Fällen ja, aber Zahlen außerhalb des 32-Bit-Bereichs können fehlschlagen. (Math.pow(2,32)-1) ^ 0; // -1 (success)...Math.pow(2,32) ^ 0; // 0 (failure)

if (A ? !B : B) {...wäre ein kürzerer Ersatz, der die 32-Bit-Beschränkung nicht hätte. Oder vielleichtif (!A != !B) {...

1
@squint Warum sollte ein wahr oder falsch jemals außerhalb des 32-Bit-Bereichs liegen, daher sind sie nur 0 oder 1, und übrigens, wenn Sie Zahlen vergleichen, verwenden Sie einfach !! n, um den booleschen Wert zu erhalten.
void main




9

Hier ist mein Beispiel:

if(userAnswer==="Yes"||"yes"||"YeS"){
 console.log("Too Bad!");   
}

Dies besagt, dass, wenn die Antwort Ja, Ja oder Ja lautet, dasselbe passieren wird


1
Verbessert sich Ihre Antwort gegenüber einer vorhandenen Antwort? Es ist ein spezifischer Anwendungsfall?
Emecas

Ist es Arbeit? Ich codiere so, aber es ist ein Syntaxfehler. Ich codiere so. if (name === 'Jam' || name === 'Jem' || name == 'Jum')
Pinguin

7
Ja, ich habe festgestellt, wie schwierig es ist, jede Aussage einzeln einzuschließen. Ich habe herausgefunden, dass das so if (number === 1||2||3)ist while (true); Die zweite und dritte Bedingung fragen, ob 2 2 und / oder 3 3 ist. Sie lösen sich immer als wahr auf, wenn die Aussage immer bestanden wird. Da ist mein Plan, die Anzahl der Charaktere zu reduzieren. Wenn Sie die Anweisungen in Klammern halten, ist das Lesen jedoch einfacher.
TimSmith-Aardwolf

3
Es ist einfach viel besser, .toLowerCase () zu verwenden, als alle verschiedenen Fallvarianten überprüfen zu müssen.
AquaAlex

1
var choice = prompt ("Wählen Sie Stein, Papier oder Schere?"). toLowerCase (); if (userChoice! = ("paper" || "rock" || "scissors")) {console.log ("Invalid Choice made"); }
AquaAlex

1

Man kann auch reguläre Ausdrücke verwenden :

var thingToTest = "B";
if (/A|B/.test(thingToTest)) alert("Do something!")

Hier ist ein Beispiel für reguläre Ausdrücke im Allgemeinen:

var myString = "This is my search subject"
if (/my/.test(myString)) alert("Do something here!")

Dies sucht nach "my" in der Variablen "myString". Sie können eine Zeichenfolge direkt anstelle der Variablen "myString" ersetzen.

Als zusätzlichen Bonus können Sie der Suche auch das Groß- und Kleinschreibung "i" und das globale "g" hinzufügen.

var myString = "This is my search subject"
if (/my/ig.test(myString)) alert("Do something here");


Interessant. Dokumentation?
Ken Sharp

0

Es ist mehr als eine Bedingungsanweisung erforderlich, um den OR(||)Operator zu verwenden , wenn Bedingungen und Notation vorliegen ||.

if(condition || condition){ 
   some stuff
}

1
Warum beantworten Sie alte Fragen mit genau der gleichen Antwort?
Ken Sharp

0

Sie können Like verwenden

if(condition1 || condition2 || condition3 || ..........)
{       
     enter code here
}

1
Warum beantworten Sie alte Fragen mit genau der gleichen Antwort?
Ken Sharp

0

Wenn wir reguläre Ausdrücke erwähnen wollen, können wir auch die switchAussage erwähnen .

var expr = 'Papayas';
switch (expr) {
  case 'Oranges':
    console.log('Oranges are $0.59 a pound.');
    break;
  case 'Mangoes':
  case 'Papayas': // Mangoes or papayas
    console.log('Mangoes and papayas are $2.79 a pound.');
    // expected output: "Mangoes and papayas are $2.79 a pound."
    break;
  default:
    console.log('Sorry, we are out of ' + expr + '.');
}


-1

Benutz einfach ||

if (A || B) { your action here }

Hinweis: mit Zeichenfolge und Nummer. Es ist komplizierter.

Überprüfen Sie dies auf tiefes Verständnis:


7
Diese Frage wurde vor vier Jahren beantwortet. Verbessert sich Ihre Antwort gegenüber einer vorhandenen Antwort?
Frambot

@ JoeFrambach: Nein. Ich möchte nur eine klarere Antwort geben :)
Haotang
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.