2012-06-20 37 views
6

Có một cách viết tắt sau -Shorthand cho nhiều HOẶC biểu thức trong câu lệnh if

if(tld == "com" || tld == "net" || tld == "co" || tld == "org" || tld == "info" || tld == "biz") 
{ 
    //do something; 
} 
+2

@Hamish Nó nói javascript, Tôi đã chỉnh sửa các thẻ cho phù hợp. – purtip31

+2

Hãy xem http://stackoverflow.com/a/10479102/298479 - Tôi đã giải thích một vài phương pháp để làm những gì bạn muốn và cũng liên kết với một so sánh hiệu suất trong trường hợp có vấn đề với bạn. – ThiefMaster

+0

@ purtip31 - Thanx. – ShalomSam

Trả lời

17

bạn có thể sử dụng một mảng

if(["","com","net","co","org","info","biz"].indexOf(tld) > -1) { 
    // do something 
} 

hoặc nếu bạn đang sử dụng jquery:

$.inArray(tld, ["com","net","co","org","info","biz"]) 

REF - Performance of OR operation (||) vs inArray()

+4

Bạn quên '! = -1' là' 0' sẽ là kết quả hoàn toàn hợp lệ ('com'). – ThiefMaster

+0

Cẩn thận với mã IF đầu tiên, dưới dạng một chuỗi rỗng - '[" ",' - cũng đánh giá thành * false *, * undefined * và * null *. Do đó, nếu ** tld ** là một trong số đó, thì IF đầu tiên vẫn sẽ vượt qua! Sử dụng tốt hơn 'if ([" com "," net "," co "," org "," thông tin "," biz "]. IndexOf (tld)> -1)' –

12

Sử dụng một regexp:

if (/^(com|net|co|org|info|biz)$/i.test(tld)) { 
    // do something 
} 
+1

sẽ xử lý như thế nào nếu tld là "cot" chứa "co"? Ok, bạn đã thêm phần bắt đầu và kết thúc như tôi đã đăng. – hackartist

+0

không phải là chậm hơn về hiệu suất? – ShalomSam

+0

@ShalomSam Tôi không biết, đó không phải là tối ưu hóa vi mô mà tôi đã thử nghiệm. –

0

cậu nghĩ về việc sử dụng câu lệnh switch? một cái gì đó như thế này:

switch(tld) 
{ 
    case 'com': 
    case 'net': 
    case 'co': 
    ... 
    ... 
    // do something for all of them 
    break; 
    default: 
    // if you want you can have default process here 
    break; 
} 
+0

tôi đã suy nghĩ về nó .. nhưng bạn lý tưởng muốn sử dụng một chuyển đổi khi bạn có thực hiện khác nhau trên các trường hợp khác nhau. Và nhiều hơn nữa tôi đang tìm kiếm một cách viết tắt, không làm cho mã của tôi dài hơn. Cảm ơn bạn đã trả lời mặc dù nhiều đánh giá cao! – ShalomSam

Các vấn đề liên quan