2012-06-20 14 views
6

¿Hay una forma abreviada de la siguiente -taquigrafía para múltiples o expresiones en la sentencia if

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

@Hamish Dice Javascript, Edité las etiquetas en consecuencia. – purtip31

+2

Eche un vistazo a http://stackoverflow.com/a/10479102/298479 - Expliqué bastantes métodos para hacer lo que desea y también se vinculó a una comparación de rendimiento en caso de que le importe. – ThiefMaster

+0

@ purtip31 - Gracias. – ShalomSam

Respuesta

17

usted podría utilizar una matriz

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

o si está utilizando jQuery:

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

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

+4

Olvidó '! = -1' ya que' 0' sería un resultado perfectamente válido ('com'). – ThiefMaster

+0

Cuidado con el primer código IF, como una cadena vacía - '[" ",' - también evalúa a * falso *, * indefinido * y * nulo *. Por lo tanto, si ** tld ** fue uno de esos, ¡el primer SI aún pasaría! Mejor uso 'if ([" com "," net "," co "," org "," info "," biz "]. IndexOf (tld)> -1)' –

12

Usar una expresión regular:

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

¿cómo se manejará esto si tld es "cot" que contiene "co"? Ok, agregó el inicio y el final como lo publiqué. – hackartist

+0

no es regexp más lento en cuanto a rendimiento? – ShalomSam

+0

@ShalomSam No lo sé, esa no es una micro-optimización que he probado todavía. –

0

pensaste acerca del uso de sentencia switch? algo como esto:

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

pensé en ello ... pero idealmente querrías usar un interruptor cuando tienes diferentes ejecuciones en casos diferentes. Y más, estoy buscando una forma abreviada, sin alargar mi código. Gracias por la respuesta, ¡muy apreciada! – ShalomSam

Cuestiones relacionadas