Come utilizzare la condizione OR in un'istruzione IF JavaScript?


108

Capisco che in JavaScript puoi scrivere:

if (A && B) { do something }

Ma come implemento un OR come:

if (A OR B) { do something }

2
Questo non è specifico per jQuery. È solo una libreria Javascript. La tua domanda è specifica per Javascript.
BalusC

2
@BalusC sono praticamente anche in questi giorni: P
Dolbz

1
@Dolbz pfooo non sono d'accordo !! : P
web-stars

1
@ web-stars molto è cambiato dal 2010 :)
Dolbz

@Dolbz mmm, oops ...: P E ancora non so niente dal 2010.
web-star

Risposte:



84

Vale la pena notare che ||tornerà anche truese ENTRAMBI Ae lo Bsono true.

In JavaScript, se stai cercando Ao B, ma non entrambi , dovrai fare qualcosa di simile a:

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

La prima frase non dovrebbe essere "Vale la pena notare che || restituirà true se SIA var A O var B è vera" ?? Ciò implica che ciò che hai menzionato è (vero | vero) = vero. che è comune e compreso.
Punith Raj

10
(A &&! B) || (B &&! A) può essere sostituito con A ^ B che è molto più fluido

1
@ Murplyx: nella maggior parte dei casi sì, ma i numeri al di fuori dell'intervallo di 32 bit possono fallire. (Math.pow(2,32)-1) ^ 0; // -1 (success)...Math.pow(2,32) ^ 0; // 0 (failure)

if (A ? !B : B) {...sarebbe un sostituto più breve che non avrebbe la limitazione a 32 bit. O forseif (!A != !B) {...

1
@squint Perché un vero o falso dovrebbe mai essere al di fuori dell'intervallo di 32 bit, quindi sono solo 0 o 1, e btw se si confrontano i numeri basta usare !! n per ottenere il valore booleano.




9

ecco il mio esempio:

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

Questo dice che se la risposta è Sì, sì o Sì, accadrà la stessa cosa


1
La tua risposta migliora rispetto a qualsiasi risposta esistente? È un caso d'uso specifico?
emecas

Funziona? Codice in questo modo ma è un errore di sintassi. Codice in questo modo. if (name === 'Jam' || name === 'Jem' || name == 'Jum')
Penguin

7
Sì, ho scoperto a mie spese che devi includere ciascuna affermazione separatamente. Ho capito che if (number === 1||2||3)è come while (true); la seconda e la terza condizione chiedono se 2 è 2 e / o 3 è 3. Risolvono sempre come true l'affermazione passa sempre. Ecco il mio piano per ridurre il numero di personaggi. Mantenere le affermazioni tra parentesi rende però più facile la lettura.
TimSmith-Aardwolf

3
Solo molto meglio usare .toLowerCase () invece di dover controllare tutte le diverse varianti di case.
AquaAlex

1
var choice = prompt ("Scegli sasso, carta o forbici?"). toLowerCase (); if (userChoice! = ("paper" || "rock" || "scissors")) {console.log ("Invalid Choice made"); }
AquaAlex

1

Si possono usare anche espressioni regolari :

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

Ecco un esempio di espressioni regolari in generale:

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

Questo cercherà "my" all'interno della variabile "myString". È possibile sostituire una stringa direttamente al posto della variabile "myString".

Come bonus aggiuntivo puoi anche aggiungere la "i" senza distinzione tra maiuscole e minuscole e la "g" globale alla ricerca.

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


Interessante. Documentazione?
Ken Sharp,

0

È necessaria più di un'istruzione di condizione per utilizzare l' OR(||)operatore in se le condizioni e la notazione sono ||.

if(condition || condition){ 
   some stuff
}

1
Perché rispondi a vecchie domande esattamente con la stessa risposta?
Ken Sharp,

0

Puoi usare Mi piace

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

1
Perché rispondi a vecchie domande esattamente con la stessa risposta?
Ken Sharp,

0

Se menzioneremo le espressioni regolari, potremmo anche menzionare la switchdichiarazione .

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

Basta usare ||

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

Nota: con stringa e numero. È più complicato.

Controlla questo per una profonda sottoscrizione:


7
Questa domanda ha ricevuto risposta quattro anni fa. La tua risposta migliora rispetto a qualsiasi risposta esistente?
Frambot

@JoeFrambach: No. Voglio solo dare una risposta più chiara :)
haotang
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.