2012-06-20 19 views
6

v'è una scorciatoia per le seguenti -Stenografia per più o espressioni in if

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

@Hamish Dice javascript, Ho modificato i tag di conseguenza. – purtip31

+2

Dai un'occhiata a http://stackoverflow.com/a/10479102/298479 - Ho spiegato un bel po 'di metodi per fare ciò che vuoi e anche collegato a un confronto delle prestazioni nel caso che ti interessi. – ThiefMaster

+0

@ purtip31 - Grazie. – ShalomSam

risposta

17

è possibile utilizzare una serie

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

o se si sta utilizzando jQuery:

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

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

+4

Hai dimenticato '! = -1' come' 0' sarebbe un risultato perfettamente valido ('com'). – ThiefMaster

+0

Attento con il primo codice IF, come una stringa vuota - '[" ",' - valuta anche a * false *, * undefined * e * null *. Pertanto, se ** tld ** fosse uno di questi, prima IF passerebbe comunque! Meglio usare 'if ([" com "," net "," co "," org "," info "," biz "]. IndexOf (tld)> -1)' –

12

Utilizzare un regexp:

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

come gestirà se tld è "cot" che contiene "co"? Ok, hai aggiunto l'inizio e la fine come ho postato. – hackartist

+0

non è regexp più lento per quanto riguarda le prestazioni? – ShalomSam

+0

@ShalomSam Non lo so, non è una micro-ottimizzazione che ho provato ancora. –

0

avete pensato sull'utilizzo di istruzione switch? qualcosa di simile:

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

ci ho pensato .. ma preferiresti usare un interruttore quando hai diverse esecuzioni in casi diversi. E ancora di più sto cercando una stenografia, non rendendo il mio codice più lungo. Grazie per la risposta anche se molto apprezzata! – ShalomSam