Comment utiliser la condition OR dans une instruction JavaScript IF?

108

Je comprends qu'en JavaScript, vous pouvez écrire:

if (A && B) { do something }

Mais comment implémenter un OU tel que:

if (A OR B) { do something }
triste
la source
2
Ce n'est d'ailleurs pas spécifique à jQuery. C'est juste une bibliothèque Javascript. Votre question est spécifique à Javascript.
BalusC
2
@BalusC, ils sont pratiquement synonymes de nos jours: P
Dolbz
1
@Dolbz pfooo en désaccord !! : P
web-stars
1
@ web-stars a beaucoup changé depuis 2010 :)
Dolbz
@Dolbz mmm, oups ...: P Et je ne sais toujours rien depuis 2010.
web-stars

Réponses:

85

Il convient de noter que cela ||reviendra également truesi LES DEUX Aet Bsonttrue .

En JavaScript, si vous recherchez Aou B, mais pas les deux , vous devrez faire quelque chose de similaire à:

if( (A && !B) || (B && !A) ) { ... }
utilisateur113716
la source
La première phrase ne devrait pas être "A noter que || retournera true si SOIT var A OU var B est vrai" ?? Cela implique que ce que vous avez mentionné est (vrai | vrai) = vrai. ce qui est commun et compris.
Punith Raj
10
(A &&! B) || (B &&! A) peut être remplacé par A ^ B qui est beaucoup plus fluide
1
@Murplyx: Dans la plupart des cas, oui, mais les nombres en dehors de la plage de 32 bits peuvent échouer. (Math.pow(2,32)-1) ^ 0; // -1 (success)...Math.pow(2,32) ^ 0; // 0 (failure)
if (A ? !B : B) {...serait un substitut plus court qui n'aurait pas la limitation 32 bits. Ou peutif (!A != !B) {...
1
@squint Pourquoi un vrai ou un faux serait-il jamais en dehors de la plage de 32 bits, par conséquent, ils ne sont que 0 ou 1, et btw si vous comparez des nombres, utilisez simplement !! n pour obtenir la valeur booléenne.
13
if (A || B) { do something }
Dolbz
la source
11

|| est l'opérateur ou.

if(A || B){ do something }
rosscj2533
la source
9

voici mon exemple:

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

Cela dit que si la réponse est oui oui ou oui, la même chose se produira

Dyljam1234
la source
1
Votre réponse améliore-t-elle une réponse existante? C'est un cas d'utilisation spécifique?
emecas
Est-ce que ça marche? Je code comme ça mais c'est une erreur de syntaxe. Je code comme ça. if (name === 'Jam' || name === 'Jem' || name == 'Jum')
Penguin
7
Oui, j'ai découvert à la dure qu'il faut inclure chaque déclaration séparément. J'ai travaillé que if (number === 1||2||3)c'est comme while (true); les deuxième et troisième conditions demandent si 2 est 2 et / ou 3 est 3. Ils résolvent toujours comme vrai à l'énoncé passe toujours. Voilà mon plan pour réduire le nombre de caractères. Cependant, garder les déclarations entre parenthèses facilite la lecture.
TimSmith-Aardwolf
3
Il vaut mieux utiliser .toLowerCase () au lieu d'avoir à vérifier toutes les variantes de cas.
AquaAlex
1
var choice = prompt ("Choisissez-vous la pierre, le papier ou les ciseaux?"). toLowerCase (); if (userChoice! = ("papier" || "rock" || "ciseaux")) {console.log ("Choix invalide effectué"); }
AquaAlex
1

On peut aussi utiliser des expressions régulières :

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

Voici un exemple d'expressions régulières en général:

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

Cela cherchera "mon" dans la variable "myString". Vous pouvez substituer une chaîne directement à la place de la variable "myString".

En prime, vous pouvez également ajouter le "i" insensible à la casse et le "g" global à la recherche.

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

jgshawkey
la source
Intéressant. Documentation?
Ken Sharp
0

Plus d'une instruction de condition est nécessaire pour utiliser l' OR(||)opérateur dans if conditions et notation ||.

if(condition || condition){ 
   some stuff
}
KARTHIKEYAN.A
la source
1
Pourquoi répondez-vous à de vieilles questions avec exactement la même réponse?
Ken Sharp
0

Vous pouvez utiliser comme

if(condition1 || condition2 || condition3 || ..........)
{       
     enter code here
}
Abhilash Reddy
la source
1
Pourquoi répondez-vous à de vieilles questions avec exactement la même réponse?
Ken Sharp
0

Si nous parlons d'expressions régulières, nous pourrions tout aussi bien mentionner l' switchinstruction .

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 + '.');
}

Utilisateur qui n'est pas un utilisateur
la source
-1

Juste utiliser ||

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

Remarque: avec chaîne et nombre. C'est plus compliqué.

Vérifiez ceci pour une compréhension approfondie:

haotang
la source
7
Cette question a reçu une réponse il y a quatre ans. Votre réponse améliore-t-elle une réponse existante?
Frambot
@JoeFrambach: Non , je veux juste faire une réponse plus claire :)
haotang