Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Porque somar o Acumulador à Nota?

Olá!

Eu compreendi que segundo parâmetro do método Reduce() diz respeito ao valor inicial da variável Acumulador, ou seja, funciona de forma semelhante ao "i" do For clássico.

Diante disso, não consegui entender do porquê do Acumulador ter que ser somado à Nota.

const salaJS = [7, 8, 8, 7, 10, 6.5, 4, 10, 7]
const salaJava = [6, 5, 8, 9, 5, 6]
const salaPython = [7, 3.5, 8, 9.5]

function calculaMedia(notasDaSala) {

    const somaDasNotas = notasDaSala.reduce((acumulador, nota) => { //O método Reduce itera (percorre) o Array somando todos os elementos. Ele recebe dois parâmetros: uma função callback e a posição inicial do Acumulador (no caso, 0).
        return acumulador + nota
    }, 0)

    return somaDasNotas / notasDaSala.length
}

calculaMedia(salaJS)
console.log(`A média da sala de JavaScript é ${calculaMedia(salaJS)}.`)
console.log(`A média da sala de Java é ${calculaMedia(salaJava)}.`)
console.log(`A média da sala de Python é ${calculaMedia(salaPython)}.`)
1 resposta
solução!

Olá, Fabio, tudo bem?

Obrigado por compartilhar sua dúvida conosco!

Antes de abordar a questão específica da soma do acumulador à nota, é importante entender o propósito geral do método reduce(). Ele é usado para reduzir os elementos de um array a um único valor, aplicando uma função de callback em cada elemento. O primeiro parâmetro dessa função de callback é o acumulador, que armazena o resultado parcial da redução, e o segundo parâmetro é o elemento atual do array.

No exemplo que você compartilhou, o objetivo é calcular a média das notas em cada sala de aula, representadas pelos arrays salaJS, salaJava e salaPython. O método reduce() é utilizado para somar todas as notas de cada sala e, em seguida, dividir essa soma pelo número total de notas na sala para obter a média.

Agora, vamos abordar a questão específica da soma do acumulador à nota. No seu código, a função de callback passada para o reduce() simplesmente retorna a soma entre o acumulador e a nota atual. Por exemplo:

const somaDasNotas = notasDaSala.reduce((acumulador, nota) => {
  return acumulador + nota;
}, 0);

O valor inicial do acumulador é definido como zero (0). Em cada iteração, a função de callback soma o valor do acumulador atual com a nota atual. Isso é feito para calcular a soma total das notas na sala.

A razão pela qual o acumulador precisa ser somado à nota é que, a cada iteração, a função de callback é chamada com o valor atual do acumulador e o próximo elemento do array. Portanto, a soma do acumulador com a nota atual garante que o valor total seja corretamente calculado ao longo de todas as iterações.

Imagine que temos o seguinte array de notas: [7, 8, 9]. Se não somarmos o acumulador à nota, a primeira iteração retornaria apenas a nota atual (7) como resultado, ignorando as notas subsequentes. A segunda iteração somaria apenas a nota atual (8) com a próxima nota (8), obtendo 16 como resultado. Isso não representaria a soma correta das notas. Portanto, é essencial somar o acumulador à nota em cada iteração para garantir que o valor total seja calculado corretamente.

No exemplo que você compartilhou, a soma total das notas é armazenada na variável somaDasNotas. Em seguida, é calculada a média dividindo essa soma pelo comprimento do array notasDaSala, ou seja, pelo número total de notas na sala. Essa média é retornada como resultado da função calculaMedia().

Agora, quando chamamos a função calculaMedia() para cada sala de aula e exibimos os resultados com console.log(), obtemos as médias corretas para cada sala.

console.log(`A média da sala de JavaScript é ${calculaMedia(salaJS)}.`);
console.log(`A média da sala de Java é ${calculaMedia(salaJava)}.`);
console.log(`A média da sala de Python é ${calculaMedia(salaPython)}.`);

Em resumo, a soma do acumulador à nota no método reduce() é necessária para calcular corretamente a soma total das notas em um array.

Isso é importante para obter resultados precisos ao realizar operações como cálculo de média.

O acumulador armazena o resultado parcial da soma ao longo das iterações e, ao somá-lo à nota atual, obtemos a soma total das notas.

Espero que essa explicação tenha sido clara e tenha ajudado a esclarecer sua dúvida.

Caso precise eu estarei aqui!

Abraços e bons estudos!