Quantcast
Channel: Blog[nbsp] » Desarrollo web
Viewing all articles
Browse latest Browse all 15

Formas de acortar un condicional de varios elementos

$
0
0

Estaba mirando stackoverflow cuando he encontrado la pregunta que da nombre a esta entrada, me ha encantando ver que tanta gente añade sus propuestas y hay tantas que no me he podido resistir las ganas de compartir esto con vosotros.
NOTA: Los créditos de toda la entrada se van a stackoverflow y a sus respectivos usuarios.

Imaginemos que tenemos un condicional largo como el siguiente:

if (value == 1 || value == 16 || value == -500 || value == 42.42 || value == 'something' ) {
// blah blah blah
}

Y queremos acortarlo para que nos sea más fácil de mantener y gestionar, bien, a continuación varias formas de tratar ese condicional de una forma un poco alternativa:

Primera opción (no compatible con IE)

var a = [1, 16, -500, 42.42, 'something'];
var value = true;
if (a.indexOf(testVar) > -1){
// blah blah blah
}

Lo que hace es utilizar la función indexOf de Array, la cual nos retorna la posición del elemento que estemos buscando, si el array no contiene lo que buscamos devuelve -1. Podéis obtener más información del siguiente enlace: pulsa aquí.

Basicamente la mejora sería implementar un indexOf manualmente.
Object.prototype.in = function(){
for(var i = 0; i < arguments.length; i++){
if (this == arguments[i]) return true;
}
return false;
}

if (value.in(1, 16, -500, 42.42, 'something')){
// blah blah blah
}

Otra alternativa menos sofisticada, el mítico switch:

switch (value) {
case 1 :
case 16 :
case -500 :
case 42.42:
case 'something'
//código
break;
}

Basicamente es como el if pero a lo vertical.

Otra opción será creando un objeto, y luego accediendo directamente al indice del mismo:

var accept = { 1: true, 16: true, '-500': true, 42.42: true, something: true }; //mas corto cambiando el true por un 1
if (accept[value]) {
// blah blah blah
}

Sinceramente esta me parece una idea muy original, pero menos practica que las otras.

Pues listos, 3 métodos alternativos para comprobar si un array contiene un elemento dado.

… por cierto 3 no son tantas :P


Viewing all articles
Browse latest Browse all 15