2
respostas

Possível dúvida no cálculo da média - parte 2

Olá,

realmente, ficou muito claro o cálculo matemático no tópico acima. Porém, não teria como fazer isso dentro da linguagem javascript?

Para mim, fica bem redundante:

media += notasGerais[i][j]/notasGerais[i].length;

em seguida:

media = media/notasGerais.length

Claro, ainda sou iniciante e isso pode ser como a linguagem de programação funciona. Mas seria interessante, ter uma maneira mais elegante de resolver isso.

Obrigado.

2 respostas

Oi, Alceu

Você pode usar "map" e "reduce", mas não me parece mais elegante

const notas1 = [10, 6.5, 8, 7.5]
const notas2 = [9, 6, 6]
const notas3 = [8.5, 9.5]

const notasGerais = [notas1, notas2, notas3]

const arrayMedias = notasGerais.map((notas, i) => notas.reduce((total, valor) => total += valor) / notasGerais[i].length);
let mediaGeral = arrayMedias.reduce((total, valor) => total += valor) / notasGerais.length;

console.log('Array das médias:',arrayMedias);
// Array das médias: (3)[ 8,7,9 ]
console.log('Média Geral:', mediaGeral);
// Média Geral: 8

Em uma linha:

// acho que fica confuso
let mediaGeral = notasGerais.map((notas,i) => notas.reduce((total, valor) => total + valor) / notasGerais[i].length).reduce((total, valor) => total + valor) / notasGerais.length 
console.log('Média Geral:', mediaGeral);
// Média Geral: 8

Veja mais em: Manipulação de array com map, filter e reduce/

Caramba, ficou muito massa. Gostei dessa solução e realmente com uma linha fica algo confuso...kkkk Muito obrigado, estarei lendo o artigo que fala sobre map e reduce.