我编写了一个函数,它接受一个对象数组(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));
后的预期结果是:
Anthony 61.333333333333336
Winnie 72.66666666666666
Pawandeep 73.33333333333333
我的结果:
Anthony 61.333333333333336
Winnie 72.66666666666666
Pawandeep 73.33333333333333
undefined
任何人都可以告诉我为什么我的结果中出现未定义的值?谢谢。
最佳答案
printAverageGrade
函数本身将消息记录到控制台。它没有 return
语句,因此返回 undefined
。
如果您将 printAverageGrade(students3)
记录到控制台,您将记录 undefined
。
解决方案:不记录printAverageGrade(students3)
:
console.log(printAverageGrade(students3))
→ printAverageGrade(students3)
关于JavaScript:获取未定义的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46967178/