我编写了一个函数,该函数接受一个对象数组(students3)并打印学生的姓名和他们的平均考试成绩。



var students3 = [
  {
    name : "Anthony",
    id : 0,
    grades : [{ id : 0, score : 84},{ id : 1, score : 20},{ id : 2, score : 80}]
  },
  {
    name : "Winnie",
    id : 1,
    grades : [{ id : 0, score : 62},{ id : 1, score : 56},{ id : 2, score : 100}]
  },
  {
    name : "Pawandeep",
    id : 2,
    grades : [{ id : 0, score : 79},{ id : 1, score : 92},{ id : 2, score : 49}]
  }
];





我的解决方案:



function getAverageScore(student)
{
  var sum = 0;
  var grades = student.grades;
  for(var i = 0; i < grades.length; i++)
  {
    var grade = grades[i];
    sum += grade.score;
  }
  var avg = sum/grades.length;
  return avg;
}


function printAverageGrade(students)
{
  for(var i = 0; i < students.length; i++)
  {
    var student = students[i];
    var averageScore = getAverageScore(student);

    console.log(student.name, averageScore);
  }
}





运行console.log(printAverageGrade(students3));后的预期结果是:


  安东尼61.333333333333336
  
  小熊72.66666666666666
  
  Pawandeep 73.33333333333333


我的结果:


  安东尼61.333333333333336
  
  小熊72.66666666666666
  
  Pawandeep 73.33333333333333
  
  未定义


任何人都可以告诉我为什么我的结果中得到未定义的值?谢谢。

最佳答案

printAverageGrade函数本身将消息记录到控制台。它没有return语句,因此它返回undefined

如果将printAverageGrade(students3)登录到控制台,则将登录undefined

解决方案:不要登录printAverageGrade(students3)

console.log(printAverageGrade(students3))printAverageGrade(students3)

09-25 12:57