Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

168
Views
¿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. Como 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; }
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

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>

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!