如何返回函数中使用Object.values(obj)返回数组的最大值



在本例中,我试图获取在对象scoreObj上使用Object.values(obj)Array.reduce()Array.length返回的返回数组的最大数量。我得到了一个带有新数字的数组(对象中每个数组的平均数字(,我想从中得到最大的数字

正如您在代码片段中看到的,getObjecVals()返回对象scoreObj中每个数组的平均数。在这一点上,我一直无法从新数组中返回最大数

我希望代码片段比我的解释更有意义。我也有点困惑,因为当我在getObjecVals()上使用typeof运算符时,它会执行undefined,尽管是新的数字数组
所以我的问题是:-

  1. 为什么getObjecVals()的类型返回undefined,同时使用数字数组进行日志记录
  2. 如何从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:我总是对获得所需结果的新方法持开放态度,但我宁愿找到一种方法来获得自己的代码。

  1. getObjecVals()返回undefined,因为您没有为此函数返回任何值。

  2. 如果你只想得到最大平均数,我只需要将所有数据存储为一个数组,并使用一些数组函数来获得结果。

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));

最新更新