Como usar a condição OR em uma instrução IF JavaScript?


108

Eu entendo que em JavaScript você pode escrever:

if (A && B) { do something }

Mas como faço para implementar um OR, como:

if (A OR B) { do something }

2
A propósito, isso não é específico do jQuery. É apenas uma biblioteca Javascript. Sua pergunta é específica para Javascript.
BalusC

2
@BalusC eles são praticamente sinônimos hoje em dia: P
Dolbz,

1
@Dolbz pfooo discordo !! : P
web-stars de

1
@ web-stars muita coisa mudou desde 2010 :)
Dolbz

@Dolbz mmm, oops ...: P E eu ainda não sei nada desde 2010.
web-stars de

Respostas:



84

Vale ressaltar que ||também retornará truese AMBOS Ae Bforem true.

Em JavaScript, se você está procurando por Aou B, mas não ambos , precisará fazer algo semelhante a:

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

Não deveria ser a primeira frase "Vale a pena notar que || retornará verdadeiro se OU var A OU var B for verdadeiro" ?? Isso implica que o que você mencionou é (verdadeiro | verdadeiro) = verdadeiro. o que é comum e compreendido.
Punith Raj

10
(A &&! B) || (B &&! A) pode ser substituído por A ^ B, que é muito mais suave

1
@Murplyx: Na maioria dos casos, sim, mas os números fora da faixa de 32 bits podem falhar. (Math.pow(2,32)-1) ^ 0; // -1 (success)...Math.pow(2,32) ^ 0; // 0 (failure)

if (A ? !B : B) {...seria um substituto mais curto que não teria a limitação de 32 bits. Ou talvezif (!A != !B) {...

1
@squint Por que um verdadeiro ou falso estaria fora do intervalo de 32 bits, portanto, eles são apenas 0 ou 1 e, aliás, se você comparar números, use !! n para obter o valor booleano.




9

aqui está meu exemplo:

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

Isso significa que se a resposta for Sim, sim ou SIM, então a mesma coisa acontecerá


1
A sua resposta melhora alguma resposta existente? É um caso de uso específico?
emecas

É trabalho? Eu código assim, mas é um erro de sintaxe. Eu código assim. if (name === 'Jam' || name === 'Jem' || name == 'Jum')
Pinguim de

7
Sim, descobri da maneira mais difícil que você deve incluir cada declaração separadamente. Eu descobri que if (number === 1||2||3)é assim while (true); a segunda e a terceira condições perguntam se 2 é 2 e / ou 3 é 3. Elas sempre são consideradas verdadeiras para a afirmação sempre aprovada. Lá se vai meu plano para reduzir a contagem de personagens. Manter as declarações entre parênteses torna mais fácil de ler.
TimSmith-Aardwolf

3
É muito melhor usar .toLowerCase () em vez de ter que verificar todas as variantes de caso diferentes.
AquaAlex de

1
var choice = prompt ("Você escolhe pedra, papel ou tesoura?"). toLowerCase (); if (userChoice! = ("papel" || "pedra" || "tesoura")) {console.log ("Escolha inválida feita"); }
AquaAlex

1

Também é possível usar expressões regulares :

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

Aqui está um exemplo de expressões regulares em geral:

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

Isso procurará "my" dentro da variável "myString". Você pode substituir uma string diretamente no lugar da variável "myString".

Como um bônus adicional, você pode adicionar o "i" que não diferencia maiúsculas de minúsculas e o "g" global à pesquisa.

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


Interessante. Documentação?
Ken Sharp

0

Mais de uma declaração de condição é necessária para usar o OR(||)operador se as condições e a notação forem ||.

if(condition || condition){ 
   some stuff
}

1
Por que você está respondendo a perguntas antigas com exatamente a mesma resposta?
Ken Sharp

0

Você pode usar Curtir

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

1
Por que você está respondendo a perguntas antigas com exatamente a mesma resposta?
Ken Sharp

0

Se vamos mencionar expressões regulares, podemos também mencionar a switchdeclaração .

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

Apenas use ||

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

Nota: com string e número. É mais complicado.

Verifique isto para uma compreensão profunda:


7
Esta pergunta foi respondida há quatro anos. A sua resposta melhora alguma resposta existente?
Frambot

@JoeFrambach: Não. Eu só quero deixar uma resposta mais clara :)
haotang
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.