JavaScript:获取未定义的值

标签 javascript arrays object undefined

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

相关文章:

java - 在java中使用线程对数组 block 进行排序

python - 在 python/numpy 中切片时“环绕”

c++ - 通过变量使用对象和对象函数

javascript - "console.error: " Action 'navigate' 与有效载荷 { "name": "Login"}was not handled by any navigator. "

javascript - 在 Typescript 上声明类型时,前导管道的用途是什么

arrays - 如何在 Swift 4 中引用数组内部数组的单元格?

java - 如果我说所有 Java 对象都是多态的,对吗?

javascript - Three.js:加载适当的模型比例/大小

javascript - 如何将数据提取到 JavaScript 中的对象中?

javascript - React - 如何向对象添加动态键/值对?