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

Dúvida - Reduce -> NaN

Olá!

Estou com esse código que estava fazendo conforme a aula mas está retornando NaN

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(notaDaSala){ const somaDasNotas = notaDaSala.reduce((acumulador, nota) => { return acumulador + nota; },0);

const media = somaDasNotas / notaDaSala.lenght

return media;

}

console.log(A média da sala JS é ${calculaMedia(salaJS)})

2 respostas
solução!

Olá! Tudo bem? Pelo que vi o erro está na parte de calcular a média, os arrays em JS tem a propriedade length contendo seu tamanho, e o único problema é que o 't' e o 'h' estão trocados:

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(notaDaSala) { 
    const somaDasNotas = notaDaSala.reduce((acumulador, nota) => { return acumulador + nota; }, 0);
                                                        // length no lugar de lenght
    const media = somaDasNotas / notaDaSala.length;

    return media;
}

console.log(`A média da sala JS é ${calculaMedia(salaJS)}`);

Com essa pequena alteração o código deve funcionar. O código está retornando NaN (Not a number) porque está sendo feita uma operação entre um número (somaDasNotas) e undefined (notaDaSala.lenght - que por estar escrita errado está referenciando uma propriedade inexistente, indefinida do array e por isso retorna undefined). Normalmente no inglês as palavras tem essa terminação em 'ght' (night, fight, etc), então é comum acontecer esse problema com a palavra length, por ser escrita diferente. Espero ter ajudado!

Estava quebrando a cabeça, e era realmente o erro de escrita do length. Obrigado!!!