【问题标题】:Calculate Average of JSON Values计算 JSON 值的平均值
【发布时间】:2018-11-21 19:43:43
【问题描述】:

我正在尝试计算 JSON 值的平均值,我尝试将它们添加到数组中但无法。有人可以帮忙吗?

我的代码:

Object.values(data).forEach(d => {
  var yo = d.values;
  console.log(yo);
});

我的结果:

9892308
9894522
3298714
3300055

我需要计算这些值的平均值。我该怎么做?

将值压入数组的代码:

Object.values(data).forEach(d => {
  var theArray = [];
  var yo = d.values;
  theArray = theArray.push(yo);
  console.log(theArray);
});

结果:

  1

我无法推送值来计算数组。

【问题讨论】:

  • 我试图将它们添加到数组中,但无法向我们展示你尝试了什么
  • 否则,从概念上讲,您将在 forEach 之前将变量设置为 0,在 forEach 中将值添加到其中,然后在 forEach 之后除以值的数量。
  • 您可以将它们全部加在一起,然后除以项目数。这就是您计算集合平均值的方式。
  • 数学非常基础。有多少个Object.values()?总数是多少?如何在 javscript 中添加数字?
  • 另外,有轻微的气味。您的模型变量称为“值”,但它似乎只有一个值。

标签: javascript jquery json foreach average


【解决方案1】:

您可以通过取值的第 n 个(长度)并将其添加到单个循环中的平均值来减少数据。

var data = { a: { values: 9892308 }, b: { values: 9894522 }, c: { values: 3298714 }, d: { values: 3300055 } },
    average = Object
        .values(data)
        .reduce((avg, { values }, _, { length }) => avg + values / length, 0);
        
console.log(average);

【讨论】:

    【解决方案2】:

    取决于您的数据结构,但Array.reduce 应该为您计算总和,然后除以平均长度。

    const data = {
      a: {
        values: 9892308,
      },
      b: {
        values: 9894522,
      },
      c: {
        values: 3298714,
      },
      something_weird: {
        values: 3300055,
      }
    }
    
    
    
    
    
    const sum = Object.values(data).reduce((acc, current) => acc + current.values, 0);
    
    const average = sum / Object.values(data).length;
    console.log(average);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-06
      • 1970-01-01
      • 2017-02-06
      • 2012-06-19
      • 2013-01-14
      • 1970-01-01
      相关资源
      最近更新 更多