Як використовувати умову АБО в операторі IF IF?


108

Я розумію, що в JavaScript ви можете писати:

if (A && B) { do something }

Але як я реалізую АБО, наприклад:

if (A OR B) { do something }

2
Це, до речі, не jQuery. Це просто бібліотека Javascript. Ваше запитання стосується Javascript.
BalusC

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

1
@Dolbz pfooo не згоден !! : P
веб-зірки

1
@ web-зірок багато що змінилося з 2010 року :)
Dolbz

@Dolbz mmm, ой ...: P І я досі нічого не знаю з 2010 року.
Веб-зірки

Відповіді:



84

Варто зазначити, що ||також повернеться, trueякщо БОТИ Aі Bє true.

У JavaScript, якщо ви шукаєте Aабо B, але не обидва , вам потрібно зробити щось подібне до:

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

Чи не повинно бути першою фразою "Варто зауважити, що || повернеться істиною, якщо EITHER var A OR var B є істинним" ?? Це означає, що ви згадали, що це (правда | | правда) = правда. що є загальним і зрозумілим.
Пуніт Радж

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 Чому істинна чи помилкова коли-небудь знаходилася поза 32-бітовим діапазоном, отже, вони лише 0 або 1, і btw, якщо порівнювати числа, просто використовуйте !! n, щоб отримати булеве значення.




9

ось мій приклад:

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

Це говорить про те, що якщо відповідь - так, так або так, то відбудеться те ж саме


1
Чи покращується ваша відповідь на будь-яку наявну відповідь? Це конкретний випадок використання?
emecas

Це працює? Я кодую так, але це синтаксична помилка. Я кодую так. if (name === 'Jam' || name === 'Jem' || name == 'Jum')
Пінгвін

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!")

Це буде шукати "моє" в змінній "myString". Ви можете замінити рядок безпосередньо замість змінної "myString".

Як додатковий бонус, ви також можете додати до пошуку нечутливі регістри "i" та глобальний "g".

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


Цікаво. Документація?
Кен Шарп

0

Більше одного твердження про умову потрібно використовувати OR(||)оператору, якщо умови та нотації є ||.

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
На це питання відповіли чотири роки тому. Чи покращується ваша відповідь на будь-яку наявну відповідь?
Фрамбот

@JoeFrambach: Ні. Я просто хочу зробити більш чітку відповідь :)
haotang
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.