Как использовать условие ИЛИ в выражении IF в JavaScript?


108

Я понимаю, что в JavaScript можно написать:

if (A && B) { do something }

Но как мне реализовать ИЛИ, например:

if (A OR B) { do something }

2
Это, кстати, не специфично для jQuery. Это просто библиотека Javascript. Ваш вопрос относится к Javascript.
BalusC 02

2
@BalusC в наши дни они практически синонимы: P
Dolbz

1
@Dolbz pfooo не согласен !! : P
web-stars

1
@ web-stars с 2010 года многое изменилось :)
Dolbz

@Dolbz ммм, упс ...: P И я до сих пор ничего не знаю с 2010 года.
web-stars

Ответы:



85

Стоит отметить, что ||также вернется, trueесли ОБА Aи Bбудут true.

В JavaScript, если вы ищете Aили B, но не оба сразу , вам нужно сделать что-то подобное:

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

Не должно быть первой фразы: «Стоит отметить, что || вернет истину, если ЛИБО var A ИЛИ var B истинно» ?? Это означает, что вы упомянули (true | true) = true. что является общим и понятным.
Пунит Радж

10
(A &&! B) || (B &&! A) можно заменить на A ^ B, что намного более плавно

1
@Murplyx: В большинстве случаев да, но числа вне 32-битного диапазона могут не работать. (Math.pow(2,32)-1) ^ 0; // -1 (success)...Math.pow(2,32) ^ 0; // 0 (failure)

if (A ? !B : B) {...будет более короткой заменой, не имеющей 32-битного ограничения. А может бытьif (!A != !B) {...

1
@squint Почему true или false когда-либо выходят за пределы 32-битного диапазона, следовательно, они только 0 или 1, и, кстати, если вы сравниваете числа, просто используйте !! n для получения логического значения.




9

вот мой пример:

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

Это говорит о том, что если ответ - Да, да или Да, то произойдет то же самое.


1
Ваш ответ лучше любого существующего ответа? Это конкретный вариант использования?
emecas

Это работает? Я так кодирую, но это синтаксическая ошибка. Я кодирую вот так. if (name === 'Jam' || name === 'Jem' || name == 'Jum')
Penguin

7
Да, я обнаружил на собственном опыте, что вам нужно включать каждое утверждение отдельно. Я понял, что if (number === 1||2||3)это нравится while (true); второе и третье условия спрашивают, равно ли 2 2 и / или 3 равно 3. Они всегда разрешаются как истинные, чтобы утверждение всегда проходило. Вот и мой план по сокращению количества персонажей. Однако, оставив утверждения в скобках, их легче читать.
TimSmith-Aardwolf

3
Намного лучше использовать .toLowerCase () вместо того, чтобы проверять все разные варианты регистра.
AquaAlex

1
var choice = prompt («Вы выбираете камень, бумагу или ножницы?»). toLowerCase (); if (userChoice! = ("бумага" || "камень" || "ножницы")) {console.log ("Сделан неверный выбор"); }
AquaAlex

1

Также можно использовать регулярные выражения :

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

Вот пример регулярных выражений в целом:

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

Это будет искать «my» в переменной «myString». Вы можете подставить строку непосредственно вместо переменной myString.

В качестве дополнительного бонуса вы можете добавить в поиск нечувствительный к регистру букву «i» и глобальную букву «g».

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


Интересный. Документация?
Кен Шарп

0

Для использования OR(||)оператора в if условиях и нотации необходимо более одного оператора условия ||.

if(condition || condition){ 
   some stuff
}

1
Почему вы отвечаете на старые вопросы точно таким же ответом?
Кен Шарп

0

Вы можете использовать Like

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

1
Почему вы отвечаете на старые вопросы точно таким же ответом?
Кен Шарп

0

Если мы собираемся упомянуть регулярные выражения, мы могли бы также упомянуть switchоператор .

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

Просто используйте ||

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

Примечание: со строкой и числом. Все сложнее.

Проверьте это на предмет глубокого понимания:


7
На этот вопрос был дан ответ четыре года назад. Ваш ответ лучше любого существующего ответа?
Frambot

@JoeFrambach: Нет, я просто хочу дать более четкий ответ :)
haotang
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.