Como especificar várias condições em uma instrução if em javascript

87

Aqui está como eu menciono duas condições se este ou este

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

Respostas:

154

apenas adicione-os dentro do colchete principal da instrução if, como

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

Logicamente, isso também pode ser reescrito de uma maneira melhor! Isso tem exatamente o mesmo significado

if (Type == 2 && (PageCount == 0 || PageCount == '')) {
AlanFoster
fonte
1
Concordar. Também não tinha uma chave de abertura para a condicional. Isso não poderia ter ajudado.
Tass
26

Aqui está uma maneira alternativa de fazer isso.

const conditionsArray = [
    condition1, 
    condition2,
    condition3,
]

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

Ou ES6

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

No momento, estou verificando um grande número de condições, que se tornam difíceis de controlar usando o método da instrução if além de, digamos, 4 condições. Apenas para compartilhar uma alternativa de aparência limpa para futuros espectadores ... que se adapta bem, eu 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
fonte
1
Não vejo comentários de que essa é uma prática imprudente, então acho que é fácil de usar. Obrigado!
CousinCocaine de
2
É importante notar e mencionar que isso só funciona se todas as condições forem avaliadas como verdadeiras. Em outras palavras, esta é outra forma de escrever, ANDmas não OR.
Mark Kramer
6

o todo ifdeve ser colocado entre colchetes e o oroperador é ||um não !!, então

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

Às vezes, você pode encontrar truques para combinar ainda mais as expressões.

Como por exemplo:

0 + 0 = 0

e

"" + 0 = 0

tão

PageCount == 0
PageCount == ''

pode ser escrito como:

PageCount+0 == 0

Em javascript 0é apenas tão bom quanto falseinvertendo !seria transformar 0emtrue

!PageCount+0

para um total geral de:

if ( Type == 2 && !PageCount+0 ) PageCount = elm.value;
user40521
fonte
Isso se você quiser tornar seu código o mais curto possível, mas vai contra muitas boas práticas. Mantenha seu código legível. Essa resposta é enigmática e levará a próxima pessoa que examinar seu código cometer algum erro.
Belvederef de
4
if((Type == 2 && PageCount == 0) || (Type == 2 && PageCount == '')) {

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

Essa poderia ser uma das soluções possíveis, então 'ou' é || não !!

Vaske
fonte
3

Enrole-os em um par extra de parênteses e você está pronto para ir.

if((Type == 2 && PageCount == 0) || (Type == 2 && PageCount == ''))
    PageCount= document.getElementById('<%=hfPageCount.ClientID %>').value;
}
Sergio Tulentsev
fonte
-1
function go(type, pageCount) {
    if ((type == 2 && pageCount == 0) || (type == 2 && pageCount == '')) {
        pageCount = document.getElementById('<%=hfPageCount.ClientID %>').value;
    }
}
Lilcent
fonte
Por favor, indente seu código, também por favor não responda às perguntas se você não estiver confiante o suficiente.
Harshit