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 }
sadmicrowave
źródło
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) ) { ... }
user113716
źródło
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ą.
13
if (A || B) { do something }
Dolbz
źródło
11

|| jest operatorem lub.

if(A || B){ do something }
rosscj2533
źródło
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

Dyljam1234
źródło
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");

jgshawkey
źródło
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
}
KARTHIKEYAN.A
źródło
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
}
Abhilash Reddy
źródło
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 + '.');
}

Użytkownik, który nie jest użytkownikiem
źródło
-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:

haotang
źródło
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