วิธีระบุเงื่อนไขหลายเงื่อนไขในคำสั่ง if ใน javascript


88

นี่คือวิธีที่ฉันพูดถึงสองเงื่อนไขหากเป็นเช่นนี้

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

คำตอบ:


160

เพียงแค่เพิ่มเข้าไปในวงเล็บหลักของคำสั่ง if like

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

สิ่งนี้สามารถเขียนใหม่ได้อย่างมีเหตุผลด้วยวิธีที่ดีกว่าเช่นกัน! นี่มีความหมายเหมือนกันทุกประการ

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

1
เห็นด้วย. ยังไม่มีวงเล็บปีกกาเปิดสำหรับเงื่อนไข นั่นไม่สามารถช่วยได้
Tass

27

นี่เป็นอีกทางเลือกหนึ่งในการทำเช่นนั้น

const conditionsArray = [
    condition1, 
    condition2,
    condition3,
]

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

หรือ ES6

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

19

ขณะนี้ฉันกำลังตรวจสอบเงื่อนไขจำนวนมากซึ่งไม่สะดวกโดยใช้วิธีคำสั่ง if นอกเหนือจากเงื่อนไข 4 ข้อ เพียงเพื่อแบ่งปันทางเลือกที่ดูสะอาดตาสำหรับผู้ชมในอนาคต ... ซึ่งปรับขนาดได้ดีฉันใช้:

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
ฉันไม่เห็นความคิดเห็นว่านี่เป็นการปฏิบัติที่ไม่ฉลาดดังนั้นฉันจึงคิดว่าควรประหยัด ขอบคุณ!
CousinCocaine

2
เป็นที่น่าสังเกตและกล่าวถึงว่าจะใช้ได้ผลก็ต่อเมื่อเงื่อนไขทั้งหมดต้องประเมินเป็นจริง ในคำอื่น ๆ นี้เป็นวิธีการเขียนอีกแต่ไม่AND OR
Mark Kramer

6

ทั้งหมดifควรอยู่ในวงเล็บและตัวorดำเนิน||การไม่ใช่!!ดังนั้น

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

5

บางครั้งคุณสามารถหาเทคนิคเพื่อรวมสถิติเพิ่มเติมได้

เช่น:

0 + 0 = 0

และ

"" + 0 = 0

ดังนั้น

PageCount == 0
PageCount == ''

สามารถเขียนได้เช่น:

PageCount+0 == 0

ในจาวาสคริปต์0นั้นดีพอ ๆ กับfalse inverting !มันจะเปิด0เข้าไปtrue

!PageCount+0

รวมทั้งหมด:

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

1
นี่คือกรณีที่คุณต้องการทำให้โค้ดของคุณสั้นที่สุด แต่ขัดกับแนวปฏิบัติที่ดีหลายประการ ทำให้รหัสของคุณอ่านได้ คำตอบนี้เป็นความลับและจะทำให้บุคคลถัดไปที่มองรหัสของคุณทำผิดพลาด
belvederef

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

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

นี่อาจเป็นหนึ่งในวิธีแก้ปัญหาที่เป็นไปได้ดังนั้น 'หรือ' คือ || ไม่ !!


3

ห่อไว้ในคู่พิเศษและคุณก็พร้อมที่จะไป

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;
    }
}

โปรดเยื้องรหัสของคุณและโปรดอย่าตอบคำถามหากคุณไม่มั่นใจเพียงพอ
Harshit
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.