在本例中,我试图获取在对象scoreObj
上使用Object.values(obj)
、Array.reduce()
和Array.length
返回的返回数组的最大数量。我得到了一个带有新数字的数组(对象中每个数组的平均数字(,我想从中得到最大的数字
正如您在代码片段中看到的,getObjecVals()
返回对象scoreObj
中每个数组的平均数。在这一点上,我一直无法从新数组中返回最大数
我希望代码片段比我的解释更有意义。我也有点困惑,因为当我在getObjecVals()
上使用typeof
运算符时,它会执行undefined
,尽管是新的数字数组
所以我的问题是:-
- 为什么
getObjecVals()
的类型返回undefined
,同时使用数字数组进行日志记录 - 如何从
getObjecVals()
返回的三个数字中获得最大的数字?let scoresObj = { johnsScore: [89, 120, 103], mikesScores: [116, 94, 123] }; const marys = scoresObj.marysScore = [97, 134, 105]; const getAverage = (arr) => arr.reduce((a, b) => (a + b), 0) / arr.length; const getObjecVals = () => { for (let value of Object.values(scoresObj)) { console.log(getAverage(value)); } } getObjecVals(); // returns 104 111 112
PS:我总是对获得所需结果的新方法持开放态度,但我宁愿找到一种方法来获得自己的代码。
-
getObjecVals()
返回undefined
,因为您没有为此函数返回任何值。 -
如果你只想得到最大平均数,我只需要将所有数据存储为一个数组,并使用一些数组函数来获得结果。
const scoresObj = {
johnsScore: [89, 120, 103],
mikesScores: [116, 94, 123],
};
scoresObj.marysScore = [97, 134, 105];
console.log(scoresObj);
const getObjecVals = scoresObj => {
let maxObj = {
objName: null,
maxAverageValue: -1,
};
for (const [key, value] of Object.entries(scoresObj)) {
const average = value.reduce((a, b) => a + b, 0) / value.length;
if (average > maxObj.maxAverageValue) {
maxObj.objName = key;
maxObj.maxAverageValue = average;
}
}
return maxObj;
};
console.log(getObjecVals(scoresObj));