javascript - 使用 array.map() 计算二维数组列的平均值

标签 javascript arrays multidimensional-array google-sheets

我有一个如下所示的数组:

var array = [ [1,3,9],
              [4,6,8],
              [3,7,5],
              [2,8,4] ];

我想获得每列的平均数,但现在我只是想对它们求和。这是我的代码:

var sum = function(arr) {
  return arr.reduce(function(a, b) { return a + b; }, 0);
};

var tests = array.map(function(v, i) {
  return sum(array.map(function(v) { return v[i]; }))
});

return tests;

输出正确地转换了总和,但它似乎在做与行(4 行)一样多的总和,而不是对应于列的 3 行。这是输出:

tests = [10, 24, 26, NULL]

知道为什么会这样吗?如何只对尽可能多的列而不是行执行计算?

编辑:

我正在使用 Nenad给出正确结果的答案。但我需要在 Google 表格的脚本编辑器上实现它,它似乎不理解带有“=>”的缩短功能。我用较长的版本替换了缩短的部分,但我没有得到相同的结果。

var array = [ [1,3,9],
              [4,6,8],
              [3,7,5],
              [2,8,4] ];

var sums = array.reduce(function(r, e, i) {
    e.forEach(function(a,j) { r[j] = (r[j] || 0) + a;
                             if (i == array.length-1) { r = r.map(function(el){ return el/array.length; }); }
                            });
    return r;
  }, [])
  
console.log(sums);  

我看不出这个版本和简化版本有什么区别,但是这个版本返回:

sums = [0.15625, 0.75, 1.34375];

代替:

sums = [2.5, 6, 6.5];

求和正确,但是当我除“el/array.length”甚至“el/4”时,结果是这 3 个奇怪的数字。我不明白那些是从哪里来的。我哪里出错了?

最佳答案

您可以使用reduce()forEach() 返回结果。

var array = [
  [1, 3, 9],
  [4, 6, 8],
  [3, 7, 5],
  [2, 8, 4]
];

var sums = array.reduce(function(r, e, i) {
  e.forEach((a, j) => r[j] = (r[j] || 0) + a)
  return r;
}, [])

console.log(sums)

要计算每列的平均值,您可以在数组的最后一次迭代中添加 map()

var array = [
  [1, 3, 9],
  [4, 6, 8],
  [3, 7, 5],
  [2, 8, 4]
];

var sums = array.reduce(function(r, e, i) {
  e.forEach((a, j) => r[j] = (r[j] || 0) + a)
  if (i == array.length - 1) r = r.map(el => el / array.length);
  return r;
}, [])

console.log(sums)

关于javascript - 使用 array.map() 计算二维数组列的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41667034/

相关文章:

javascript - 网页开发: Building a graph and running an algorithm

javascript - 触发引导模式隐藏 (hide.bs.modal) 事件后,$location.path 需要一些时间才能工作

java - main() 打印多维数组的值与 Paint() 不同

python - 为什么我在尝试转换 np.array(some_list) ValueError : could not broadcast input array 时出错

php - PHP-从定界字符串中创建多维关联数组

javascript - React-Redux 的 connect() 方法抛出 TypeError

javascript - 在 Highcharts 中更改区域样条图中的线条颜色

不持有一个以上账户的 C++ 银行应用程序

arrays - 如何在postgresql中找到任意大小数组的所有组合(子集)

PHP函数解析多维数组?