Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

171
Vistas
¿Dónde tengo errores con esta estructura de control Switch en JS?

Estoy trabajando en una función usando Javascript que según un valor recibido (una nota) te devuelve la calificación de esa nota, según el sistema educativo español. El código es el siguiente:

 function calculateSpanishClassAverageMark(averageMark) { console.log("me muestra mi nota media", averageMark); var markText = " "; switch (averageMark) { case 10: markText = "Esta clase ha obtenido una matrícula de honor" break; case averageMark >= 9 && averageMark < 10: markText = "Esta clase ha obtenido un sobresaliente" break; case averageMark >= 7 && averageMark < 9: markText = "Esta clase ha obtenido un notable" break; case averageMark >= 6 && averageMark < 7: markText = "Esta clase ha obtenido un bien" break; case averageMark >= 5 && averageMark < 6: markText = "Esta clase ha obtenido un suficiente" break; case averageMark >= 4 && averageMark < 5: markText = "Esta clase ha obtenido un insuficiente" break; case averageMark < 4: markText = "Esta clase ha obtenido un muy deficiente" break; default: break; } return console.log("Marktext", markText); }

El primer console.log me muestra mi nota media 7.625 por lo que se está recibiendo el parámetro averageMark. Sin embargo, el archivo console.log que devuelvo muestra lo siguiente: Marktext . He intentado depurar, y el comportamiento es que cuando el programa llega al interruptor, va directamente a la opción predeterminada, por lo que no cambia el valor de markText . ¿Dónde estoy cometiendo un error? No entiendo por qué si el valor de averageMark es 7.625 , por qué no entra en ese caso del interruptor. Gracias.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

La declaración de switch es para seleccionar valores particulares, no rangos.

about 4 years ago · Juan Pablo Isaza Denunciar

0

La declaración de cambio es para seleccionar valores particulares, no rangos.

Esto es cierto, pero hay un truco para usar el switch como selector de rango. Obviamente, si averageMark no es un número entre 0 y 10, el conmutador elegirá la opción default o, si es superior a 10, elegirá el segundo caso.

 function FirstCalc(averageMark) { var markText = " "; switch (true) { case (averageMark == 10): markText = "Esta clase ha obtenido una matrícula de honor" break; case (averageMark >= 9): markText = "Esta clase ha obtenido un sobresaliente" break; case (averageMark >= 7): markText = "Esta clase ha obtenido un notable" break; case (averageMark >= 6): markText = "Esta clase ha obtenido un bien" break; case (averageMark >= 5): markText = "Esta clase ha obtenido un suficiente" break; case (averageMark >= 4): markText = "Esta clase ha obtenido un insuficiente" break; default: markText = "Esta clase ha obtenido un muy deficiente // default option !" break; } return averageMark + " // " + markText; } $('#firstRes').append(FirstCalc(0) + '<br/>'); $('#firstRes').append(FirstCalc(2) + '<br/>'); $('#firstRes').append(FirstCalc(4) + '<br/>'); $('#firstRes').append(FirstCalc(6) + '<br/>'); $('#firstRes').append(FirstCalc(8) + '<br/>'); $('#firstRes').append(FirstCalc(10) + '<br/>'); $('#firstRes').append(FirstCalc(55) + '<br/>'); $('#firstRes').append(FirstCalc(1.25) + '<br/>'); $('#firstRes').append(FirstCalc("word") + '<br/>');
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="firstRes"></div>

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda