Jak określić wiele warunków w instrukcji if w javascript

88

Oto, jak wymieniłem dwa warunki, jeśli to lub to

if (Type == 2 && PageCount == 0) || (Type == 2 && PageCount == '')
    PageCount= document.getElementById('<%=hfPageCount.ClientID %>').value;
}
adilahmed
źródło

Odpowiedzi:

160

po prostu dodaj je w głównym nawiasie instrukcji if, np

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

Logicznie rzecz biorąc, można to również przepisać w lepszy sposób! Ma to dokładnie to samo znaczenie

if (Type == 2 && (PageCount == 0 || PageCount == '')) {
AlanFoster
źródło
1
Zgodzić się. Nie ma też otwierającego nawiasu klamrowego dla warunku. To nie mogło pomóc.
Tass
27

Oto alternatywny sposób, aby to zrobić.

const conditionsArray = [
    condition1, 
    condition2,
    condition3,
]

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

Lub ES6

if (!conditionsArray.includes(false)) {
   "do somthing"
}
Glen Thompson
źródło
19

Obecnie sprawdzam dużą liczbę warunków, które stają się nieporęczne przy użyciu metody instrukcji if poza powiedzmy 4 warunkami. Żeby podzielić się czysto wyglądającą alternatywą dla przyszłych widzów ... która ładnie się skaluje, używam:

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
}
Edward Taylor
źródło
1
Nie widzę komentarzy, że jest to nierozsądna praktyka, więc myślę, że jest bezpieczna w użyciu. Dzięki!
CousinCocaine
2
Warto zauważyć i wspomnieć, że działa to tylko wtedy, gdy wszystkie warunki muszą zostać uznane za prawdziwe. Innymi słowy, jest to inny sposób pisania, ANDale nie OR.
Mark Kramer
6

całość ifnależy ująć w nawiasy a oroperatorem jest ||nie !!, więc

if ((Type == 2 && PageCount == 0) || (Type == 2 && PageCount == '')) { ...
Fabrizio Calderan
źródło
5

Czasami można znaleźć sztuczki do dalszego łączenia statystyk.

Jak na przykład:

0 + 0 = 0

i

"" + 0 = 0

więc

PageCount == 0
PageCount == ''

można zapisać tak:

PageCount+0 == 0

W JavaScript 0jest tak samo dobra jak falseodwracanie !okazałoby 0siętrue

!PageCount+0

łącznie:

if ( Type == 2 && !PageCount+0 ) PageCount = elm.value;
user40521
źródło
1
Dzieje się tak, jeśli chcesz, aby Twój kod był jak najkrótszy, ale jest to sprzeczne z wieloma dobrymi praktykami. Zachowaj czytelność kodu. Ta odpowiedź jest tajemnicza i skłoni następną osobę, która spojrzy na Twój kod, do popełnienia błędu.
belvederef
4
if((Type == 2 && PageCount == 0) || (Type == 2 && PageCount == '')) {

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

Może to być jedno z możliwych rozwiązań, więc „or” jest || nie !!

vaske
źródło
3

Owiń je w dodatkową parę spodni i gotowe.

if((Type == 2 && PageCount == 0) || (Type == 2 && PageCount == ''))
    PageCount= document.getElementById('<%=hfPageCount.ClientID %>').value;
}
Sergio Tulentsev
źródło
-1
function go(type, pageCount) {
    if ((type == 2 && pageCount == 0) || (type == 2 && pageCount == '')) {
        pageCount = document.getElementById('<%=hfPageCount.ClientID %>').value;
    }
}
Lilcent
źródło
Wciśnij kod, ale nie odpowiadaj na pytania, jeśli nie masz wystarczającej pewności siebie.
Harshit