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

208
Vistas
¿Hay alguna manera de usar una declaración de cambio en JavaScript con una variable para mostrar texto basado en otra variable?

Estoy tratando de obtener una declaración de cambio para usar una variable llamada "promedio" para el promedio de cinco calificaciones. Las cinco calificaciones se suman para obtener el total y luego se dividen por cinco para obtener el promedio. Me gusta esto:

 avg = +grade_one + +grade_two + +grade_three + +grade_four + +grade_five;

El interruptor debe mostrar cinco casos, uno para cada rango de calificación (es decir, 90 % a 100 % = A). Así como el propio porcentaje.

Intenté usar casos con valores numéricos como "caso 1", por ejemplo, y luego imprimí dos líneas de texto, pero eso no funcionó.

¿Debería intentar usar una estructura if-else antes del cambio para establecer a qué equivale cada porcentaje de calificación en una carta, o eso no funcionará?

Aquí está el código para el interruptor.

 switch (avg) { case 1: letter = "A"; per = "90-100"; document.write("Based on your semester average, your grade falls between " + per + "%"); document.write("you earned a " + letter); break; case 2: letter = "B"; per = "80-89.9"; document.write("Based on your semester average your grade falls between " + per + "%"); document.write("you earned a " + letter); break; case 3: letter = "A"; per = "70-79.9"; document.write("Based on your semester average your grade falls between " + per + "%"); document.write("you earned a " + letter); break; case 4: letter = "D"; per = "60-69.9"; document.write("Based on your semester average your grade falls between " + per + "%"); document.write("you earned a " + letter); break; case 5: letter = "F"; per = "Below 60%"; document.write("Based on your semester average your grade falls between " + per + "%"); document.write("you earned a " + letter); default: document.write("Invalid Entry"); break; }
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

No debe usar un switch para eso: el código para cada caso es demasiado similar. La diferencia está solo en unos pocos valores, que puede almacenar en una matriz. Luego busque en esa matriz en qué segmento cae el promedio y construya la salida a partir de eso.

Además, no use document.write para esto. En su lugar, cree un elemento (como un div ) que contendrá el mensaje de salida.

No sé cuál es el contexto de tu ejercicio, pero supongo que hay algunas entradas con los 5 grados. Cárguelos como una matriz (no como 5 variables distintas) y calcule el promedio de forma genérica (no vinculado a 5).

Aquí hay un código sugerido en un fragmento ejecutable:

 let thresholds = [100.1, 90, 80, 70, 60, 0]; let inputs = document.querySelectorAll("input"); let output = document.querySelector("div"); let button = document.querySelector("button"); button.addEventListener("click", function () { let grades = Array.from(inputs, inp => +inp.value); let avg = grades.reduce((a, b) => a + b) / grades.length; let i = thresholds.findIndex(min => avg >= min); let letter = "-ABCDF"[i]; let low = thresholds[i]; let high = thresholds[i - 1] - 0.1; let msg = `Based on your semester average, your grade falls between ${low}-${high}%\nYou earned a ${letter}.`; output.textContent = msg; });
 Grades: <ul> <li><input type="number" min="0" max="100" value="80" size="4"> <li><input type="number" min="0" max="100" value="80" size="4"> <li><input type="number" min="0" max="100" value="80" size="4"> <li><input type="number" min="0" max="100" value="80" size="4"> <li><input type="number" min="0" max="100" value="80" size="4"> </ul> <button>Get grade</button> <div></div>

over 4 years ago · Santiago Trujillo 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