He estado buscando y no he encontrado una pregunta y respuesta simples en el desbordamiento de la pila para encontrar el promedio de una matriz.
Esta es la matriz que tengo
const grades = [80, 77, 88, 95, 68];Primero pensé que la respuesta a este problema sería algo como esto:
let avg = (grades / grades.length) * grades.length console.log(avg)Sin embargo, esto me dio una salida de NaN.
Entonces probé esto:
for (let grade of grades) avg = (grade / grades.length) * grades.length console.log(avg)Esto me dio una salida de 68. (No estoy seguro de por qué).
Así que con esto tengo dos preguntas. 1. ¿Por qué mi salida fue 68? y 2. ¿Alguien podría ayudarme a encontrar el promedio de una matriz?
Con ES6 puede convertir la solución de Andy en una sola línea:
const average = (array) => array.reduce((a, b) => a + b) / array.length; console.log(average([1,2,3,4,5]));Calculas un promedio sumando todos los elementos y luego dividiendo por el número de elementos.
var total = 0; for(var i = 0; i < grades.length; i++) { total += grades[i]; } var avg = total / grades.length;La razón por la que obtuviste 68 como resultado es porque en tu bucle sigues sobrescribiendo tu promedio, por lo que el valor final será el resultado de tu último cálculo. Y tu división y multiplicación por grados.longitud se anulan entre sí.
Para la segunda parte de su pregunta, puede usar reduce con buenos resultados aquí:
const grades = [80, 77, 88, 95, 68]; function getAvg(grades) { const total = grades.reduce((acc, c) => acc + c, 0); return total / grades.length; } const average = getAvg(grades); console.log(average);Las otras respuestas han dado una buena idea de por qué obtuviste 68, por lo que no lo repetiré aquí.