Bagaimana menentukan beberapa kondisi dalam pernyataan if di javascript

88

Berikut adalah bagaimana saya menyebutkan dua kondisi jika ini atau ini

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

Jawaban:

160

tambahkan saja di dalam braket utama pernyataan if like

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

Logikanya ini juga bisa ditulis ulang dengan cara yang lebih baik! Ini memiliki arti yang persis sama

if (Type == 2 && (PageCount == 0 || PageCount == '')) {
AlanFoster
sumber
1
Setuju. Juga tidak memiliki kurung kurawal buka untuk kondisional. Itu tidak bisa membantu.
Tass
27

Berikut adalah cara alternatif untuk melakukannya.

const conditionsArray = [
    condition1, 
    condition2,
    condition3,
]

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

Atau ES6

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

Saat ini saya memeriksa sejumlah besar kondisi, yang menjadi berat menggunakan metode pernyataan if di luar katakan 4 kondisi. Hanya untuk berbagi alternatif yang tampak bersih bagi pemirsa masa depan ... yang berskala bagus, saya menggunakan:

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
sumber
1
Saya tidak melihat komentar bahwa ini adalah praktik yang tidak bijaksana, jadi saya pikir ini aman untuk digunakan. Terima kasih!
SepupuCocaine
2
Perlu dicatat dan disebutkan bahwa ini hanya berfungsi jika semua kondisi harus bernilai benar. Dengan kata lain, ini adalah cara penulisan lain ANDtetapi tidak OR.
Mark Kramer
6

keseluruhan ifharus diapit tanda kurung dan oroperatornya ||bukan !!, jadi

if ((Type == 2 && PageCount == 0) || (Type == 2 && PageCount == '')) { ...
Fabrizio Calderan
sumber
5

Terkadang Anda dapat menemukan trik untuk menggabungkan statment lebih lanjut.

Seperti misalnya:

0 + 0 = 0

dan

"" + 0 = 0

begitu

PageCount == 0
PageCount == ''

bisa ditulis seperti:

PageCount+0 == 0

Dalam javascript 0sama baiknya dengan falsemembalik !itu akan berubah 0menjaditrue

!PageCount+0

untuk total keseluruhan:

if ( Type == 2 && !PageCount+0 ) PageCount = elm.value;
pengguna40521
sumber
1
Ini jika Anda ingin membuat kode Anda sesingkat mungkin tetapi bertentangan dengan banyak praktik yang baik. Jaga agar kode Anda dapat dibaca. Jawaban ini samar dan akan menyebabkan orang berikutnya yang melihat kode Anda membuat kesalahan.
belvederef
4
if((Type == 2 && PageCount == 0) || (Type == 2 && PageCount == '')) {

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

Ini bisa jadi salah satu solusi yang mungkin, jadi 'atau' adalah || tidak !!

vaske
sumber
3

Bungkus mereka dengan sepasang paren ekstra dan Anda siap melakukannya.

if((Type == 2 && PageCount == 0) || (Type == 2 && PageCount == ''))
    PageCount= document.getElementById('<%=hfPageCount.ClientID %>').value;
}
Sergio Tulentsev
sumber
-1
function go(type, pageCount) {
    if ((type == 2 && pageCount == 0) || (type == 2 && pageCount == '')) {
        pageCount = document.getElementById('<%=hfPageCount.ClientID %>').value;
    }
}
Lilcent
sumber
Harap masukkan kode Anda, juga jangan menjawab pertanyaan jika Anda tidak cukup yakin.
Harshit