【问题标题】:How to return the largest number returning from a function in which the Object.values(obj) is used in it to return an array?如何返回从其中使用 Object.values(obj) 以返回数组的函数返回的最大数?
【发布时间】:2021-08-24 08:32:57
【问题描述】:

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

正如您在代码 sn-p 中看到的,getObjecVals() 返回对象 scoreObj 中每个数组的平均数。此时,我被困在从新数组中返回最大数。

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

  1. 为什么 getObjecVals() 的 typeof 返回 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:我总是乐于接受获得所需结果的新方法,但我宁愿找到一种方法让我自己的代码来做到这一点。

【问题讨论】:

  • 请添加想要的结果。顺便说一句,一个函数需要一个返回语句,如果不是没有块语句的箭头函数。

标签: javascript arrays function object


【解决方案1】:
  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));

【讨论】:

  • 太棒了!但是如果我们想保持数组对象的原样,因为保持键很重要呢?
  • @Mozaick,我更新了答案。请看看输出是不是你想要的。
  • 就是这个。谢谢。
猜你喜欢
  • 2020-02-28
  • 2020-10-13
  • 1970-01-01
  • 2013-05-15
  • 1970-01-01
  • 2018-03-30
  • 2019-12-21
  • 2013-12-25
相关资源
最近更新 更多