Jak używać warunku OR w instrukcji IF JavaScript?


108

Rozumiem, że w JavaScript możesz napisać:

if (A && B) { do something }

Ale jak zaimplementować operację LUB taką jak:

if (A OR B) { do something }

2
Nawiasem mówiąc, nie jest to specyficzne dla jQuery. To tylko biblioteka Javascript. Twoje pytanie dotyczy JavaScript.
BalusC

2
@BalusC są obecnie praktycznie synonimami: P
Dolbz

1
@Dolbz pfooo nie zgadzam się !! : P
web-stars

1
@ web-stars bardzo się zmieniło od 2010 roku :)
Dolbz

@Dolbz mmm, ups ...: P I nadal nic nie wiem od 2010 roku.
web-stars

Odpowiedzi:



85

Warto zauważyć, że ||powróci to również, truejeśli ZARÓWNO Ai tak Bjest true.

W JavaScript, jeśli szukasz Alub B, ale nie obu , musisz zrobić coś podobnego do:

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

Pierwszą frazą nie powinno być „Warto zauważyć, że || zwróci prawdę, jeśli ALBO var A ALBO var B jest prawdziwe” ?? Oznacza to, że wspomniałeś (prawda | prawda) = prawda. co jest powszechne i zrozumiałe.
Punith Raj

10
(A &&! B) || (B &&! A) można zastąpić A ^ B, co jest znacznie płynniejsze

1
@Murplyx: W większości przypadków tak, ale liczby spoza zakresu 32-bitowego mogą zawieść. (Math.pow(2,32)-1) ^ 0; // -1 (success)...Math.pow(2,32) ^ 0; // 0 (failure)

if (A ? !B : B) {...byłby krótszym substytutem, który nie miałby ograniczenia 32-bitowego. A możeif (!A != !B) {...

1
@squint Dlaczego prawda lub fałsz miałyby kiedykolwiek znajdować się poza zakresem 32-bitowym, stąd mają tylko 0 lub 1, a przy okazji, jeśli porównujesz liczby, po prostu użyj !! n, aby uzyskać wartość boolowską.




9

oto mój przykład:

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

Oznacza to, że jeśli odpowiedź brzmi tak, tak lub tak, stanie się to samo


1
Czy Twoja odpowiedź jest lepsza od istniejącej odpowiedzi? To konkretny przypadek użycia?
emecas

Czy to działa? Koduję w ten sposób, ale to błąd składni. Koduję w ten sposób. if (name === 'Jam' || name === 'Jem' || name == 'Jum')
Penguin

7
Tak, odkryłem na własnej skórze, że każde stwierdzenie trzeba uwzględnić osobno. Wypracowałem, że if (number === 1||2||3)jest jak while (true); drugi i trzeci warunek pytają, czy 2 jest równe 2 i / lub 3 równa się 3. Zawsze rozstrzygają, że stwierdzenie zawsze przechodzi. Oto mój plan zmniejszenia liczby znaków. Jednak umieszczanie zdań w nawiasach ułatwia ich czytanie.
TimSmith-Aardwolf

3
Po prostu znacznie lepiej jest użyć .toLowerCase () zamiast sprawdzać wszystkie warianty przypadku.
AquaAlex

1
var choice = prompt ("Czy wybierasz kamień, papier czy nożyczki?"). toLowerCase (); if (userChoice! = ("papier" || "kamień" || "nożyczki")) {console.log ("Dokonano nieprawidłowego wyboru"); }
AquaAlex

1

Można też użyć wyrażeń regularnych :

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

Oto przykład ogólnych wyrażeń regularnych:

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

Spowoduje to wyszukanie „my” w zmiennej „myString”. Możesz zastąpić ciąg bezpośrednio w miejscu zmiennej „myString”.

Jako dodatkowy bonus możesz dodać do wyszukiwania również niewrażliwe na wielkość liter „i” i globalne „g”.

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


Ciekawy. Dokumentacja?
Ken Sharp,

0

Więcej niż jedna instrukcja warunku jest potrzebna, aby użyć OR(||)operatora in, jeśli warunki i notacja są ||.

if(condition || condition){ 
   some stuff
}

1
Dlaczego odpowiadasz na stare pytania z dokładnie taką samą odpowiedzią?
Ken Sharp,

0

Możesz użyć Like

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

1
Dlaczego odpowiadasz na stare pytania z dokładnie taką samą odpowiedzią?
Ken Sharp,

0

Jeśli zamierzamy wspomnieć o wyrażeniach regularnych, równie dobrze możemy wspomnieć o switchoświadczeniu .

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

Po prostu użyj ||

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

Uwaga: z ciągiem i numerem. To jest bardziej skomplikowane.

Sprawdź to, aby uzyskać głębokie zrozumienie:


7
Na to pytanie odpowiedziano cztery lata temu. Czy Twoja odpowiedź jest lepsza od istniejącej odpowiedzi?
Frambot

@JoeFrambach: Nie. Chcę tylko udzielić jaśniejszej odpowiedzi :)
haotang
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.