Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Sugestão] Proposta de correção do tópico "Faça como eu fiz: loops em matrizes" do curso "JavaScript: conhecendo arrays"

Boa noite. Tenho uma proposta de correção com relação ao seguinte código (ligeiramente modificado) do tópico de loops em matrizes do curso de JavaScript: conhecendo matrizes. Mantive praticamente idêntico à parte da "Opinião do Instrutor", mas preferi fazer da seguinte forma: criei uma variável chamada "qtdeDeElementos" inicializada com zero, e que coloquei para incrementar no for mais interno. A ideia é ela contar quantos elementos têm em todos os arrays (notas1, notas2 e notas3). Na linha "somaDasNotas += notasGerais[i][j]", eu retirei o divisor, e eu preferi dividir no final o SomaDasNotas com a minha qtdeDeElementos.

Eu notei que fazer média das médias nem sempre dá o mesmo resultado de retirar a média total de todos os elementos. Pois nesse caso, a soma de todos os elementos dá 71, e a quantidade de todos eles é 9. A divisão de um pelo outro dá aproximadamente 7,89 e não 8 como no código original.

Espero ter contribuído.

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

const notasGerais = [notas1,notas2,notas3]

let somaDasNotas = 0 let qtdeDeElementos = 0

for (let i = 0; i < notasGerais.length; i++) { for (let j = 0; j < notasGerais[i].length; j++) { somaDasNotas += notasGerais[i][j] qtdeDeElementos++ } }

const media = somaDasNotas/qtdeDeElementos

console.log(A média das notas é: ${media.toFixed(2)})

2 respostas
solução!

Oi alexandre, tudo bem? Legal sua proposta! Achei interessante exercitar os conceitos já colocando os dois laços for para iterar sobre a matriz toda em vez de quebrar em fases. Com o mais enxuto certamente facilita pros dev que vai dar manutenção nele posteriomente, sem precisar te consultar.

Só uma coisinha que faltou na última linha do seu código foi o acento grave para delimitar a string das variáveis. Ficaria assim:

console.log(`A média das notas é: ${media.toFixed(2)}`)

Em tempo, para calcular a média, usei seu código para tentar otimizar o contador de elementos usando um concat para agrupar todos os elementos de notas e então extrair o seu tamanho no cálculo final. Chamei de quantidadeElementos:

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 quantidadeElementos = (notas1.concat(notas2, notas3)).length

let somaDasNotas = 0 


for (let i = 0; i < notasGerais.length; i++) { 
    for (let j = 0; j < notasGerais[i].length; j++) { 
        somaDasNotas += notasGerais[i][j] 
        } 
    }

const media = somaDasNotas/quantidadeElementos
console.log(`A média das notas é: ${media.toFixed(2)}`)

Espero ter contribuído! Abraço e vamos estudando!

Boa tarde Rafael, tudo bem graças a Deus. Obrigado pelo retorno. Gostei dessa forma que você usou para varrer os 3 arrays, concatenando-os e extraindo o tamanho total do array. Dessa forma o código ficou mais simples e compreensível. Interessante que no meu código eu tinha colocado os acentos graves na template literal, não sei por que aqui não copiou hehe.

Mas é isso aí, vamos estudando e nos ajudando mutuamente.