So geben Sie mehrere Bedingungen in einer if-Anweisung in Javascript an

86

Hier ist, wie ich zwei Bedingungen erwähne, wenn dies oder das

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

Antworten:

152

Fügen Sie sie einfach in die Hauptklammer der if-Anweisung wie ein

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

Logischerweise kann dies auch besser umgeschrieben werden! Dies hat genau die gleiche Bedeutung

if (Type == 2 && (PageCount == 0 || PageCount == '')) {
AlanFoster
quelle
1
Stimmen Sie überein. Hatte auch keine öffnende geschweifte Klammer für die Bedingung. Das hätte nicht helfen können.
Tass
26

Hier ist eine alternative Möglichkeit, dies zu tun.

const conditionsArray = [
    condition1, 
    condition2,
    condition3,
]

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

Oder ES6

if (!conditionsArray.includes(false)) {
   "do somthing"
}
Glen Thompson
quelle
19

Ich überprüfe derzeit eine große Anzahl von Bedingungen, die mit der if-Anweisungsmethode über 4 Bedingungen hinaus unhandlich werden. Nur um eine sauber aussehende Alternative für zukünftige Zuschauer zu teilen ... die sich gut skalieren lässt, verwende ich:

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
quelle
1
Ich sehe keine Kommentare, dass dies eine unkluge Praxis ist, daher denke ich, dass es sicher ist, sie zu verwenden. Vielen Dank!
CousinCocaine
2
Es ist erwähnenswert und zu erwähnen, dass dies nur funktioniert, wenn alle Bedingungen als wahr bewertet werden müssen. Mit anderen Worten, dies ist eine andere Art zu schreiben, ANDaber nicht OR.
Mark Kramer
6

Das Ganze ifsollte in Klammern eingeschlossen sein und der orBediener ist ||ein nicht !!, also

if ((Type == 2 && PageCount == 0) || (Type == 2 && PageCount == '')) { ...
Fabrizio Calderan
quelle
6

Manchmal finden Sie Tricks, um Aussagen weiter zu kombinieren.

Wie zum Beispiel:

0 + 0 = 0

und

"" + 0 = 0

so

PageCount == 0
PageCount == ''

kann geschrieben werden wie:

PageCount+0 == 0

In Javascript 0ist nur so gut , wie falseUmkehren !es drehen würde 0intrue

!PageCount+0

für eine Gesamtsumme von:

if ( Type == 2 && !PageCount+0 ) PageCount = elm.value;
user40521
quelle
Dies ist der Fall, wenn Sie Ihren Code so kurz wie möglich halten möchten, dies jedoch gegen viele bewährte Methoden verstößt. Halten Sie Ihren Code lesbar. Diese Antwort ist kryptisch und veranlasst die nächste Person, die Ihren Code betrachtet, einen Fehler zu machen.
Belvederef
4
if((Type == 2 && PageCount == 0) || (Type == 2 && PageCount == '')) {

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

Dies könnte eine der möglichen Lösungen sein, also ist 'oder' || nicht !!

vaske
quelle
3

Wickeln Sie sie in ein zusätzliches Paar Parens und Sie können loslegen.

if((Type == 2 && PageCount == 0) || (Type == 2 && PageCount == ''))
    PageCount= document.getElementById('<%=hfPageCount.ClientID %>').value;
}
Sergio Tulentsev
quelle
-1
function go(type, pageCount) {
    if ((type == 2 && pageCount == 0) || (type == 2 && pageCount == '')) {
        pageCount = document.getElementById('<%=hfPageCount.ClientID %>').value;
    }
}
Lilcent
quelle
Bitte rücken Sie Ihren Code ein und beantworten Sie auch keine Fragen, wenn Sie nicht sicher genug sind.
Harshit