Как указать несколько условий в операторе if в javascript


87

Вот как я упоминаю о двух условиях, если то или иное

if (Type == 2 && PageCount == 0) || (Type == 2 && PageCount == '')
    PageCount= document.getElementById('<%=hfPageCount.ClientID %>').value;
}

Ответы:


154

просто добавьте их в основную скобку оператора if, например

if ((Type == 2 && PageCount == 0) || (Type == 2 && PageCount == '')) {
            PageCount= document.getElementById('<%=hfPageCount.ClientID %>').value;
}

Логически это тоже можно переписать в лучшую сторону! Это имеет точно такое же значение

if (Type == 2 && (PageCount == 0 || PageCount == '')) {

1
Concur. Также не было открывающей фигурной скобки для условного. Это не могло помочь.
ТАСС

26

Вот альтернативный способ сделать это.

const conditionsArray = [
    condition1, 
    condition2,
    condition3,
]

if (conditionsArray.indexOf(false) === -1) {
    "do somthing"
}

Или ES6

if (!conditionsArray.includes(false)) {
   "do somthing"
}

19

В настоящее время я проверяю большое количество условий, что становится громоздким с использованием метода оператора if, превышающего, скажем, 4 условия. Просто чтобы поделиться чистой альтернативой для будущих зрителей ... которая хорошо масштабируется, я использую:

var a = 0;
var b = 0;

a += ("condition 1")? 1 : 0; b += 1;
a += ("condition 2")? 1 : 0; b += 1;
a += ("condition 3")? 1 : 0; b += 1;
a += ("condition 4")? 1 : 0; b += 1;
a += ("condition 5")? 1 : 0; b += 1;
a += ("condition 6")? 1 : 0; b += 1;
// etc etc

if(a == b) {
    //do stuff
}

1
Я не вижу комментариев, что это неразумная практика, поэтому думаю, что ее можно использовать. Благодарность!
CousinCocaine

2
Стоит отметить и упомянуть, что это работает, только если все условия должны быть истинными. Другими словами, это другой способ написания, ANDно это не так OR.
Марк Крамер


6

Иногда можно найти уловки для дальнейшего комбинирования статусов.

Как например:

0 + 0 = 0

а также

"" + 0 = 0

так

PageCount == 0
PageCount == ''

можно записать так:

PageCount+0 == 0

В javascript 0это так же хорошо, как falseинвертирование, !это превратилось бы 0вtrue

!PageCount+0

на общую сумму:

if ( Type == 2 && !PageCount+0 ) PageCount = elm.value;

Это если вы хотите сделать свой код как можно короче, но это противоречит многим передовым методам. Держите ваш код читабельным. Этот ответ загадочен и заставит следующего человека, взглянувшего на ваш код, совершить ошибку.
belvederef

4
if((Type == 2 && PageCount == 0) || (Type == 2 && PageCount == '')) {

        PageCount= document.getElementById('<%=hfPageCount.ClientID %>').value;
}

Это могло быть одним из возможных решений, поэтому «или» равно || нет !!


3

Оберните их лишней парой парней, и все готово.

if((Type == 2 && PageCount == 0) || (Type == 2 && PageCount == ''))
    PageCount= document.getElementById('<%=hfPageCount.ClientID %>').value;
}

-1
function go(type, pageCount) {
    if ((type == 2 && pageCount == 0) || (type == 2 && pageCount == '')) {
        pageCount = document.getElementById('<%=hfPageCount.ClientID %>').value;
    }
}

Сделайте отступ в коде и не отвечайте на вопросы, если вы недостаточно уверены.
Харшит
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.