我编写了一个函数,该函数接受一个对象数组(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)