如何在javascript中获取函数接受参数作为字符串

时间:2015-04-22 05:53:10

标签: javascript

认为这是一个简单的问题,但只是可以'抓住它;

所以有这些:

var students = ["Joseph", "Susan", "William", "Elizabeth"]

var scores = [ [80, 70, 70, 100], [85, 80, 90, 90], [75, 70, 80, 75], [100, 90, 95, 85] ]

var gradebook = {
Joseph: {
   testScores: scores[0]
},
Susan: {
    testScores: scores[1]
 },
William: {
   testScores: scores[2]
},
Elizabeth: {
   testScores: scores[3]
},
addScore: function(name, score) {
    gradebook[name]["testScores"].push(score);
 },
getAverage: function(name) {
    average(gradebook[name]["testScores"]);
  }
};

var average = function(array) {
  return array.reduce(function(a, b) { return a + b }) / array.length;
};

有2个数组和成绩单对象,想要调用gradebook.getAverage(" Joseph")并返回平均值。 但是getAverage函数中的这一行average(gradebook[name]["testScores"]);我觉得无法正常工作。

当我将代码放入节点终端然后执行gradebook.getAverage("Joseph");时,我得到了未定义的内容。

如果我在终端中average(gradebook["Joseph"]["testScores"],我会得到我想要的答案。

希望这是有道理的! 感谢

2 个答案:

答案 0 :(得分:2)

您从函数调用中获得undefined的原因是它们没有返回任何值。将其更改为:

addScore: function(name, score) {
    return gradebook[name]["testScores"].push(score);
 },
getAverage: function(name) {
    return average(gradebook[name]["testScores"]);
  }
};

答案 1 :(得分:1)

您需要从getAverage方法返回值:

getAverage: function(name) {
  return average(gradebook[name]["testScores"]);
}