Estoy trabajando en una aplicación angular. Tengo una matriz de la siguiente manera:
data = [ { num1:12.233, num2: 13.345 }, { num1:10.233, num2: 23.345 }, { num1:18.233, num2: 33.345 } ]Del mismo modo, en tiempo de ejecución puedo tener muchos elementos. Quiero atravesar una matriz de modo que pueda agregar todos los num1 y dividirlos por el número de num1 presente. Por ejemplo, quiero escribir un código que pueda tomar num1 de cada elemento
12.233 + 10.233 + 18.233 / 3(total num1 elements in array)Del mismo modo para num2.
¿Cómo puedo hacer eso?
Simplemente puede usar reduce para obtener el total de elementos y luego dividirlo con data.length
const data = [ { num1: 12.233, num2: 13.345, }, { num1: 10.233, num2: 23.345, }, { num1: 18.233, num2: 33.345, }, ]; const avg = data.reduce((acc, curr) => acc + curr.num1, 0) / data.length; console.log(avg); Para el promedio de num2 , puede hacer lo mismo como:
const avg = data.reduce((acc, curr) => acc + curr.num2, 0) / data.length; También puede obtener el average usando una single iteration como:
const data = [ { num1: 12.233, num2: 13.345, }, { num1: 10.233, num2: 23.345, }, { num1: 18.233, num2: 33.345, }, ]; const [avgNum1, avgNum2] = data .reduce((acc, curr) => [acc[0] + curr.num1, acc[1] + curr.num2], [0, 0]) .map((n) => n / data.length); console.log(avgNum1, avgNum2);Puede recorrer data y agregar los valores de num1 y num2 a una variable, luego dividirlos por la longitud de data (que es 3).
const data = [ { num1: 12.233, num2: 13.345 }, { num1: 10.233, num2: 23.345 }, { num1: 18.233, num2: 33.345 } ] let num1 = 0; let num2 = 0; for (let i = 0; i < data.length; i++) { num1 += data[i].num1; num2 += data[i].num2; } const num1Avg = num1 / data.length; const num2Avg = num2 / data.length; console.log(`Average of num1: ${num1Avg}`) console.log(`Average of num2: ${num2Avg}`)let avg = data.reduce( (accumVariable, curValue) => accumVariable + curValue.num1 , 0 ) / data.length