认为这是一个简单的问题,但只是可以'抓住它;
所以有这些:
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"]
,我会得到我想要的答案。
希望这是有道理的! 感谢
答案 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"]);
}