Cómo especificar múltiples condiciones en una declaración if en javascript

87

Así es como menciono dos condiciones si esto o esto

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

Respuestas:

154

solo agréguelos dentro del corchete principal de la declaración if como

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

¡Lógicamente, esto también se puede reescribir de una mejor manera! Esto tiene exactamente el mismo significado

if (Type == 2 && (PageCount == 0 || PageCount == '')) {
AlanFoster
fuente
1
Concurrir. Tampoco tenía un corchete de apertura para el condicional. Eso no pudo haber ayudado.
Tass
26

Aquí hay una forma alternativa de hacerlo.

const conditionsArray = [
    condition1, 
    condition2,
    condition3,
]

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

O ES6

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

Actualmente estoy verificando una gran cantidad de condiciones, lo que se vuelve difícil de manejar usando el método de declaración if más allá de, digamos, 4 condiciones. Solo para compartir una alternativa de apariencia limpia para futuros espectadores ... que escala muy bien, uso:

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
fuente
1
No veo comentarios de que esta es una práctica imprudente, por lo que creo que es conveniente usarla. ¡Gracias!
CousinCocaine
2
Vale la pena señalar y mencionar que esto solo funciona si todas las condiciones deben evaluarse como verdaderas. En otras palabras, esta es otra forma de escribir, ANDpero no OR.
Mark Kramer
6

el conjunto ifdebe estar entre paréntesis y el oroperador es ||un no !!, por lo que

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

A veces puedes encontrar trucos para combinar aún más las declaraciones.

Como por ejemplo:

0 + 0 = 0

y

"" + 0 = 0

entonces

PageCount == 0
PageCount == ''

se puede escribir como:

PageCount+0 == 0

En javascript 0es tan bueno como falseinvertirlo !se convertiría 0entrue

!PageCount+0

para un gran total de:

if ( Type == 2 && !PageCount+0 ) PageCount = elm.value;
user40521
fuente
Esto es así si desea que su código sea lo más corto posible, pero va en contra de muchas buenas prácticas. Mantenga su código legible. Esta respuesta es críptica e inducirá a la próxima persona que mire su código a cometer algún error.
belvederef
4
if((Type == 2 && PageCount == 0) || (Type == 2 && PageCount == '')) {

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

Esta podría ser una de las posibles soluciones, por lo que 'o' es || no !!

vaske
fuente
3

Envuélvalos en un par de parens extra y listo.

if((Type == 2 && PageCount == 0) || (Type == 2 && PageCount == ''))
    PageCount= document.getElementById('<%=hfPageCount.ClientID %>').value;
}
Sergio Tulentsev
fuente
-1
function go(type, pageCount) {
    if ((type == 2 && pageCount == 0) || (type == 2 && pageCount == '')) {
        pageCount = document.getElementById('<%=hfPageCount.ClientID %>').value;
    }
}
Lilcent
fuente
Por favor, sangra el código y no responda preguntas si no tiene la suficiente confianza.
Harshit