JavaScript'teki bir if ifadesinde birden çok koşul nasıl belirtilir


88

İşte bu veya bu ise iki koşuldan nasıl bahsediyorum

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

Yanıtlar:


160

bunları if ifadesinin ana parantezinin içine ekleyin.

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

Mantıksal olarak bu da daha iyi bir şekilde yeniden yazılabilir! Bu tamamen aynı anlama sahip

if (Type == 2 && (PageCount == 0 || PageCount == '')) {

1
Hemfikir olmak. Ayrıca koşul için açılış küme parantezi yoktu. Bu yardımcı olamazdı.
Tass

27

İşte bunu yapmanın alternatif bir yolu.

const conditionsArray = [
    condition1, 
    condition2,
    condition3,
]

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

Veya ES6

if (!conditionsArray.includes(false)) {
   "do somthing"
}

19

Şu anda çok sayıda koşulu kontrol ediyorum ve bu, 4 koşulun ötesinde if ifadesi yöntemini kullanarak hantal hale geliyor. Gelecekteki izleyiciler için temiz görünen bir alternatifi paylaşmak için ... güzel bir şekilde ölçeklenen şunları kullanıyorum:

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
}

1
Bunun akıllıca olmayan bir uygulama olduğuna dair herhangi bir yorum görmüyorum, bu yüzden kullanmanın tasarruflu olduğunu düşünüyorum. Teşekkürler!
CousinCocaine

2
Bunun yalnızca tüm koşulların doğru olarak değerlendirilmesi gerektiğinde işe yaradığını belirtmek ve belirtmek gerekir. Başka bir deyişle, bu başka bir yazma şeklidir ANDama değil OR.
Mark Kramer

6

bütün ifparantez içine alınmalıdır ve oroperatör ||bir değildir !!, bu nedenle

if ((Type == 2 && PageCount == 0) || (Type == 2 && PageCount == '')) { ...

5

Bazen ifadeleri daha fazla birleştirmek için püf noktaları bulabilirsiniz.

Örneğin:

0 + 0 = 0

ve

"" + 0 = 0

yani

PageCount == 0
PageCount == ''

şöyle yazılabilir:

PageCount+0 == 0

Javascript'te tersine çevirmek 0kadar iyidir .false!0true

!PageCount+0

genel toplam için:

if ( Type == 2 && !PageCount+0 ) PageCount = elm.value;

1
Bu, kodunuzu olabildiğince kısa yapmak istiyorsanız, ancak birçok iyi uygulamaya aykırıdır. Kodunuzu okunabilir tutun. Bu cevap şifreli ve kodunuza bakan bir sonraki kişiyi bazı hata yapmaya sevk edecektir.
belvederef

4
if((Type == 2 && PageCount == 0) || (Type == 2 && PageCount == '')) {

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

Bu olası çözümlerden biri olabilir, yani 'veya' eşittir || değil !!


3

Onları fazladan bir çift parantez içine sarın ve gitmeniz iyi olur.

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

-1
function go(type, pageCount) {
    if ((type == 2 && pageCount == 0) || (type == 2 && pageCount == '')) {
        pageCount = document.getElementById('<%=hfPageCount.ClientID %>').value;
    }
}

Lütfen kodunuzu girin, ayrıca yeterince emin değilseniz lütfen soruları yanıtlamayın.
Harshit
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.