Foros del Web » Programando para Internet » Javascript »

Como hacer Switch con multiples condiciones

Estas en el tema de Como hacer Switch con multiples condiciones en el foro de Javascript en Foros del Web. Espero que me pueda ayudar alguna persona con el siguiente problema: Quiero averiguar con la sentencia switch si el valor de un numero dado, se ...
  #1 (permalink)  
Antiguo 12/08/2013, 09:35
 
Fecha de Ingreso: octubre-2006
Mensajes: 227
Antigüedad: 17 años, 6 meses
Puntos: 3
Pregunta Como hacer Switch con multiples condiciones

Espero que me pueda ayudar alguna persona con el siguiente problema:

Quiero averiguar con la sentencia switch si el valor de un numero dado, se encuentra dentro de un rango determinado. Este es el codigo que tengo, pero no funciona.

Código Javascript:
Ver original
  1. numero=10;
  2. switch (numero) {
  3.     case ((numero > 0) && (numero <= 4)):
  4.         alert("El numero esta entre 1 y 4") ;
  5.         break;
  6.     case ((numero > 4) && (numero <= 10)):
  7.         alert("El numero esta entre 5 y 10") ;
  8.         break;
  9.     case ((numero > 10) && (numero <= 20)):
  10.         alert("El numero esta entre 11 y 20") ;
  11.         break;
  12. }
  #2 (permalink)  
Antiguo 12/08/2013, 11:17
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Como hacer Switch con multiples condiciones

buenas...
fíjate que switch no funciona exactamente igual que un if aunque tiene cierto parecido. la diferencia es que if necesita un boolean mientras que switch compara directamente el valor con el case. en el código sucede que el case es una expresión que evalua a boolean y luego ese boolean es comparado con el argumento. lo cual, no habrá ninguna coincidencia. para que el case sea ejecutado, el case debe resultar el mismo valor que el argumento. naturalmente, la forma de hacerlo es haciendo múltiples cases, cada uno con su valor. obviamente, no es la forma más cómoda de hacerlo.

se me ocurre una idea, pero aún así no creo que sea la mejor forma.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 12/08/2013, 11:34
Avatar de Aijoona
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Buenos Aires
Mensajes: 779
Antigüedad: 13 años
Puntos: 343
Respuesta: Como hacer Switch con multiples condiciones

En lo personal no soy muy amigo de las condiciones complejas dentro del switch.

Para un caso como este preferiria una solucion ad hoc que sea más declarativa:

Código Javascript:
Ver original
  1. function matchRanges(ranges, value) {
  2.     var current;
  3.     for(var i = 0, l = ranges.length; i < l; i++) {
  4.         current = ranges[i];
  5.         if(current.from < value && current.to >= value) {
  6.             return current.fn(value, current.from, current.to);
  7.         }
  8.     }
  9. }
  10.  
  11.  
  12. matchRanges([
  13.     {
  14.         from: 0,
  15.         to: 4,
  16.         fn: function(value, from, to) {
  17.             alert('El numero está entre 1 y 4');
  18.         }
  19.     },
  20.     {
  21.         from: 4,
  22.         to: 10,
  23.         fn: function(value, from, to) {
  24.             alert('El numero está entre 5 y 10');
  25.         }
  26.     },
  27.     {
  28.         from: 10,
  29.         to: 20,
  30.         fn: function(value, from, to) {
  31.             alert('El numero está entre 11 y 20');
  32.         }
  33.     },
  34.    
  35. ], 10)
__________________
blog | @aijoona
  #4 (permalink)  
Antiguo 12/08/2013, 12:23
 
Fecha de Ingreso: octubre-2006
Mensajes: 227
Antigüedad: 17 años, 6 meses
Puntos: 3
Respuesta: Como hacer Switch con multiples condiciones

Cita:
Iniciado por zerokilled Ver Mensaje
buenas...
fíjate que switch no funciona exactamente igual que un if aunque tiene cierto parecido. la diferencia es que if necesita un boolean mientras que switch compara directamente el valor con el case. en el código sucede que el case es una expresión que evalua a boolean y luego ese boolean es comparado con el argumento. lo cual, no habrá ninguna coincidencia. para que el case sea ejecutado, el case debe resultar el mismo valor que el argumento. naturalmente, la forma de hacerlo es haciendo múltiples cases, cada uno con su valor. obviamente, no es la forma más cómoda de hacerlo.

se me ocurre una idea, pero aún así no creo que sea la mejor forma.
Definitivamente lo hare entonces con if, muchas gracias zerokilled
  #5 (permalink)  
Antiguo 12/08/2013, 12:26
 
Fecha de Ingreso: octubre-2006
Mensajes: 227
Antigüedad: 17 años, 6 meses
Puntos: 3
Respuesta: Como hacer Switch con multiples condiciones

Cita:
Iniciado por Aijoona Ver Mensaje
En lo personal no soy muy amigo de las condiciones complejas dentro del switch.

Para un caso como este preferiria una solucion ad hoc que sea más declarativa:

Se ve interesante el codigo que escribiste, vale la pena estudiarlo. Tiene algun nombre este tipo de sintaxis, para buscar mas informacion sobre ella?.

{
from: 0,
to: 4,
fn: function(value, from, to) {
alert('El numero está entre 1 y 4');
}
},

Última edición por Gloton; 12/08/2013 a las 14:28

Etiquetas: condiciones, funcion, multiples, switch
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:13.