Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] ¿Cómo cambiar de "if-else" a "switch"?

Estas en el tema de ¿Cómo cambiar de "if-else" a "switch"? en el foro de Javascript en Foros del Web. Buenas tardes (el horario que tengo es 05:15 p.m.) a todos. Quisiera hacer alguna pregunta acerca de cómo cambiar estructuras de control en Javascript, pues ...
  #1 (permalink)  
Antiguo 01/05/2013, 16:21
Avatar de bryanjhv  
Fecha de Ingreso: marzo-2013
Ubicación: Cajamarca
Mensajes: 35
Antigüedad: 11 años, 1 mes
Puntos: 3
Pregunta ¿Cómo cambiar de "if-else" a "switch"?

Buenas tardes (el horario que tengo es 05:15 p.m.) a todos.
Quisiera hacer alguna pregunta acerca de cómo cambiar estructuras de control en Javascript, pues deseo minimzar al máximo mi código.
Al grano: el código que tengo es el siguiente:
Código Javascript:
Ver original
  1. if (valor >= 100) {
  2.     // Hacer alguna acción
  3. } else if (valor >= 90) {
  4.     // Hacer alguna acción
  5. } else if (valor >= 80) {
  6.     // Hacer alguna acción
  7. } else if (valor >= 70) {
  8.     // Hacer alguna acción
  9. } else if (valor >= 60) {
  10.     // Hacer alguna acción
  11. } else if (valor >= 50) {
  12.     // Hacer alguna acción
  13. } else if (valor >= 40) {
  14.     // Hacer alguna acción
  15. } else if (valor >= 30) {
  16.     // Hacer alguna acción
  17. } else if (valor >= 20) {
  18.     // Hacer alguna acción
  19. } else if (valor >= 10) {
  20.     // Hacer alguna acción
  21. } else {
  22.     // Hacer alguna acción
  23. }
Ahora, ¿cómo podría hacerle para pasarlo a una estructura "switch"? Pues tengo entendido que sólo funciona con "==" pero vi en algún artículo que no recuerdo que también se podía para ">", "<", ">=", "<=".
Gracias por anticipado por su ayuda.
  #2 (permalink)  
Antiguo 01/05/2013, 22:01
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: ¿Cómo cambiar de "if-else" a "switch"?

Como poder se puede, pero para lo que querés hacer lo correcto es usar el else if

Ejemplo

Código:
<script type="text/javascript">
//<![CDATA[

var valor=prompt("Ingrese un número entre 1 y 101");
valor = parseInt(valor);
if (valor >= 100) {
    alert('100');
} else if (valor >= 90) {
    alert('90');
} else if (valor >= 80) {
    alert('80');
} else if (valor >= 70) {
    alert('70');
} else if (valor >= 60) {
    alert('60');
} else if (valor >= 50) {
    alert('50');
} else if (valor >= 40) {
    alert('40');
} else if (valor >= 30) {
    alert('30');
} else if (valor >= 20) {
    alert('20');
} else if (valor >= 10) {
    alert('10');
} else {
    alert('z');
}


var valor2=prompt("Ingrese un número entre 1 y 101");
valor2 = parseInt(valor2);
switch(true){
case(valor2 >= 100 && valor2 < 200): 
alert('100');
break
case(valor2 >= 90 && valor2 < 100): 
alert('90');
break
case(valor2 >= 80 && valor2 < 90): 
alert('80');
break
case(valor2 >= 70 && valor2 < 80):
alert('70');
break
case(valor2 >= 60 && valor2 < 70 ):
alert('60');
break
case(valor2 >= 50 && valor2 < 60):
alert('50');
break
case(valor2 >= 40 && valor2 < 50 ):
alert('40');
break
case(valor2 >= 30 && valor2 < 40):
alert('30');
break
case(valor2 >= 20 && valor2 < 30):
alert('20');
break
case(valor2 >= 10 && valor2 < 20 ):
alert('10');
break
default:
alert('y');
break
}

//]]>
</script>
al ser true una constante, podés comparar la expresión contra eso, pero es completamente rebuscado e ineficaz, la expresión es más compleja y requiere de muchas más lineas de código para conseguir el mismo resultado

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 02/05/2013, 04:41
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 12 años, 7 meses
Puntos: 297
Respuesta: ¿Cómo cambiar de "if-else" a "switch"?

No estoy deacuerdo contigo @emprear, ya que las sentencias switch se crearon justamente para eso. Eso sí, estoy deacuerdo en que necesitarás más lineas para obtener el mismo resultado.
__________________
Freelance Developer — www.rubenmartin.me PHP, SQL, Wordpress, Prestashop, Codeigniter, Laravel
RegaloConsolas — www.regaloconsolas.com Sorteo juegos, consolas y accesorios
  #4 (permalink)  
Antiguo 02/05/2013, 09:54
Avatar de bryanjhv  
Fecha de Ingreso: marzo-2013
Ubicación: Cajamarca
Mensajes: 35
Antigüedad: 11 años, 1 mes
Puntos: 3
Respuesta: ¿Cómo cambiar de "if-else" a "switch"?

Muchas gracias por las respuestas @emprear y @hasdpk.
Finalmente, y como dijo @emprear, es más eficaz usar bloques de if - else. Quise minimizar el código (es para hacer un AdSense responsive) pero gracias al ejemplo vi que es mejor usar la primera opción.
De todas maneras iré investigando otras formas más breves de hacerlo.
Gracias de nuevo y saludos.
  #5 (permalink)  
Antiguo 02/05/2013, 10:16
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: ¿Cómo cambiar de "if-else" a "switch"?

Cita:
Iniciado por bryanjhv Ver Mensaje
Muchas gracias por las respuestas @emprear y @hasdpk.
Finalmente, y como dijo @emprear, es más eficaz usar bloques de if - else. Quise minimizar el código (es para hacer un AdSense responsive) pero gracias al ejemplo vi que es mejor usar la primera opción.
De todas maneras iré investigando otras formas más breves de hacerlo.
Gracias de nuevo y saludos.
quiero precisar algo, está comprobado que la ejecución de un switch es generalmente más rápida, pero, el tema es que esta pensada para hacer la comparación del label contra el valor de la variable, si bien el artilugio que puse funciona, el tener que construir una expresión ficticia para verificar el true/false de la misma me parece una forma rebuscada.

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #6 (permalink)  
Antiguo 03/05/2013, 12:08
Avatar de Aijoona
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Buenos Aires
Mensajes: 779
Antigüedad: 12 años, 11 meses
Puntos: 343
Respuesta: ¿Cómo cambiar de "if-else" a "switch"?

Yo diría que más que debatir el caso del switch / else revises lo que estás haciendo. Apuesto 1 moneda de chocolate a estás encarando mal el problema.
__________________
blog | @aijoona
  #7 (permalink)  
Antiguo 01/07/2013, 22:23
Avatar de bryanjhv  
Fecha de Ingreso: marzo-2013
Ubicación: Cajamarca
Mensajes: 35
Antigüedad: 11 años, 1 mes
Puntos: 3
Respuesta: ¿Cómo cambiar de "if-else" a "switch"?

Gracias nuevamente por sus respuestas. Usé el if-else y todo me anda a la perfección

Etiquetas: campos, control, estructuras, ifelse, 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 12:30.