1
resposta

Se eu quiser um return só, utilizando forEach diminuindo o for no exemplo abaixo fica como?

var beatriz = new Student("beatriz", 10);
var mariana = new Student("mariana", 20);
var cecilia = new Student("cecilia", 8);

var students = [beatriz, mariana, cecilia];

var higherStudent = students[0]; 

for(var i = 1; i < students.length; i++) {
    var student = students[i] 
    if(student.grade > higherStudent.grade) {
        higherStudent = student; 
    }
}
console.log("Aprovado " + higherStudent.name);
1 resposta

Oi Ariadni, pelo que entendi, você quer capturar o aluno com a maior nota? É isso? Se for, com uma linha só de filter, você consegue fazer isso.

var beatriz = new Student("beatriz", 10);
var mariana = new Student("mariana", 20);
var cecilia = new Student("cecilia", 8);

var students = [beatriz, mariana, cecilia];

var studentsGrades = students.map(s => s.grade);
var greatestGrade = Math.max.apply(null, studentsGrades)
var higherStudent = students.filter(student => student.grade == greatestGrade);

console.log("Aprovado " + higherStudent.name);

Na primeira linha eu capturo apenas as notas, na segunda eu uso a função max para saber qual é a maior nota, e por último eu filtro da lista o aluno que tem aquela nota. Deu pra entender?