¿Cómo usar la condición OR en una declaración IF de JavaScript?


108

Entiendo que en JavaScript puedes escribir:

if (A && B) { do something }

Pero, ¿cómo implemento un OR como:

if (A OR B) { do something }

2
Por cierto, esto no es específico de jQuery. Es solo una biblioteca de Javascript. Su pregunta es específica de Javascript.
BalusC

2
@BalusC son prácticamente sinónimos en estos días: P
Dolbz

1
@Dolbz pfooo en desacuerdo !! : P
web-stars

1
@ web-stars ha cambiado mucho desde 2010 :)
Dolbz

@Dolbz mmm, oops ...: P Y todavía no sé nada desde 2010.
web-stars

Respuestas:



84

Vale la pena señalar que ||también volverá truesi AMBOS Ay lo Bson true.

En JavaScript, si está buscando Ao B, pero no ambos , deberá hacer algo similar a:

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

¿No debería ser la primera frase "Vale la pena señalar que || devolverá verdadero si YA var A O var B es verdadero"? Implica que lo que mencionaste es (verdadero | verdadero) = verdadero. que es común y entendido.
Punith Raj

10
(A &&! B) || (B &&! A) se puede reemplazar con A ^ B, que es mucho más suave

1
@Murplyx: En la mayoría de los casos, sí, pero los números fuera del rango de 32 bits pueden fallar. (Math.pow(2,32)-1) ^ 0; // -1 (success)...Math.pow(2,32) ^ 0; // 0 (failure)

if (A ? !B : B) {...sería un sustituto más corto que no tendría la limitación de 32 bits. O tal vezif (!A != !B) {...

1
@squint ¿Por qué un verdadero o falso alguna vez estaría fuera del rango de 32 bits? Por lo tanto, son solo 0 o 1, y por cierto, si compara números, use !! n para obtener el valor booleano.




9

aquí está mi ejemplo:

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

Esto dice que si la respuesta es Sí, sí o Sí, ocurrirá lo mismo.


1
¿Su respuesta mejora alguna respuesta existente? ¿Es un caso de uso específico?
emecas

¿Funciona? Codifico así, pero es un error de sintaxis. Codifico así. if (name === 'Jam' || name === 'Jem' || name == 'Jum')
Pingüino

7
Sí, descubrí por las malas que tienes que incluir cada declaración por separado. Me di cuenta de que if (number === 1||2||3)es como while (true); la segunda y tercera condiciones preguntan si 2 es 2 y / o 3 es 3. Siempre se resuelven como verdaderas a la afirmación siempre pasa. Ahí va mi plan para reducir el número de personajes. Sin embargo, mantener las declaraciones entre paréntesis facilita la lectura.
TimSmith-Aardwolf

3
Es mucho mejor usar .toLowerCase () en lugar de tener que verificar todas las variantes de casos diferentes.
AquaAlex

1
var choice = prompt ("¿Eliges piedra, papel o tijeras?"). toLowerCase (); if (userChoice! = ("paper" || "rock" || "scissors")) {console.log ("Elección no válida hecha"); }
AquaAlex

1

También se pueden usar expresiones regulares :

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

Aquí tienes un ejemplo de expresiones regulares en general:

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

Esto buscará "my" dentro de la variable "myString". Puede sustituir una cadena directamente en lugar de la variable "myString".

Como ventaja adicional, puede agregar la "i" que no distingue entre mayúsculas y minúsculas y la "g" global a la búsqueda también.

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


Interesante. ¿Documentación?
Ken Sharp

0

Se necesita más de una declaración de condición para usar el OR(||)operador en if condiciones y notación ||.

if(condition || condition){ 
   some stuff
}

1
¿Por qué está respondiendo preguntas antiguas con exactamente la misma respuesta?
Ken Sharp

0

Puedes usar Me gusta

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

1
¿Por qué está respondiendo preguntas antiguas con exactamente la misma respuesta?
Ken Sharp

0

Si vamos a mencionar expresiones regulares, también podríamos mencionar la switchdeclaración .

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

Solo usa ||

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

Nota: con cuerda y número. Es mas complicado.

Compruebe esto para una comprensión profunda:


7
Esta pregunta fue respondida hace cuatro años. ¿Su respuesta mejora alguna respuesta existente?
Frambot

@JoeFrambach: No, sólo quiero hacer una respuesta más clara :)
haotang
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.