1
resposta

Resolução com reduce method

const curso = {
    titulo: 'JavaScript para Iniciantes',
    estudantes: [
        {
            nome: 'João',
            progresso: 80
        },
        {
            nome: 'Maria',
            progresso: 95
        },
        {
            nome: 'Pedro',
            progresso: 60
        }
    ],
    gerarRelatorio: function() {
        for (let estudante of this.estudantes) {
            let situacao = estudante.progresso >= 70 ? 'Aprovado' : 'Em andamento';
            console.log(`Estudante: ${estudante.nome}, Progresso: ${estudante.progresso}%, Situação: ${situacao}`)
        }
        console.log(`Total de estudantes: ${this.estudantes.length}`)
        console.log(`Média de progresso: ${this.calcularMediaProgresso()}%`)
    },
    calcularMediaProgresso: function() {
        let total = this.estudantes.reduce((acc, estudante) => acc + estudante.progresso, 0)
        let quantidadeEstudantes = this.estudantes.length
        return (total / quantidadeEstudantes).toFixed(2)
    }
}

curso.gerarRelatorio()
1 resposta

Olá, Felipe, como vai?

Seu código atende plenamente ao que foi solicitado no exercício e demonstra um ótimo domínio sobre o uso de métodos de array e a manipulação de objetos. A lógica aplicada para separar a responsabilidade do cálculo da média em uma função específica dentro do objeto deixou a estrutura organizada e de fácil leitura.

O uso do método reduce para somar os valores de progresso é uma prática excelente e moderna no JavaScript.

Agradeço por compartilhar sua resolução conosco e parabéns pelo empenho. Continue praticando e postando seus progressos por aqui.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!