Comment spécifier plusieurs conditions dans une instruction if en javascript

87

Voici comment je mentionne deux conditions si telle ou telle

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

Réponses:

154

ajoutez-les simplement dans le crochet principal de l'instruction if comme

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

Logiquement, cela peut aussi être réécrit d'une meilleure manière! Cela a exactement la même signification

if (Type == 2 && (PageCount == 0 || PageCount == '')) {
AlanFoster
la source
1
Concur. N'avait pas non plus de parenthèse ouvrante pour le conditionnel. Cela n'aurait pas pu aider.
Tass
26

Voici une autre façon de faire cela.

const conditionsArray = [
    condition1, 
    condition2,
    condition3,
]

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

Ou ES6

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

Je vérifie actuellement un grand nombre de conditions, ce qui devient compliqué en utilisant la méthode de l'instruction if au-delà de 4 conditions. Juste pour partager une alternative propre aux futurs téléspectateurs ... qui évolue bien, j'utilise:

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
la source
1
Je ne vois aucun commentaire indiquant que cette pratique est imprudente, donc je pense que c'est sûr à utiliser. Merci!
CousinCocaine
2
Il convient de noter et de mentionner que cela ne fonctionne que si toutes les conditions doivent être évaluées à vrai. En d'autres termes, c'est une autre façon d'écrire ANDmais pas OR.
Mark Kramer
6

le tout ifdoit être mis entre crochets et l' oropérateur est ||un non !!, donc

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

Parfois, vous pouvez trouver des astuces pour combiner davantage les déclarations.

Comme par exemple:

0 + 0 = 0

et

"" + 0 = 0

donc

PageCount == 0
PageCount == ''

peut être écrit comme:

PageCount+0 == 0

En javascript, 0c'est aussi bien falsequ'inverser !ça tournerait0 entrue

!PageCount+0

pour un total général de:

if ( Type == 2 && !PageCount+0 ) PageCount = elm.value;
utilisateur40521
la source
C'est si vous voulez rendre votre code aussi court que possible mais cela va à l'encontre de nombreuses bonnes pratiques. Gardez votre code lisible. Cette réponse est cryptique et incitera la prochaine personne qui regarde votre code à faire une erreur.
belvederef
4
if((Type == 2 && PageCount == 0) || (Type == 2 && PageCount == '')) {

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

Cela pourrait être l'une des solutions possibles, donc "ou" est || ne pas !!

Vaske
la source
3

Enveloppez-les dans une paire de parens supplémentaire et vous êtes prêt à partir.

if((Type == 2 && PageCount == 0) || (Type == 2 && PageCount == ''))
    PageCount= document.getElementById('<%=hfPageCount.ClientID %>').value;
}
Sergio Tulentsev
la source
-1
function go(type, pageCount) {
    if ((type == 2 && pageCount == 0) || (type == 2 && pageCount == '')) {
        pageCount = document.getElementById('<%=hfPageCount.ClientID %>').value;
    }
}
Lilcent
la source
Veuillez mettre votre code en retrait, ne répondez pas non plus aux questions si vous n'êtes pas assez confiant.
Harshit