查找数组中每个数组的平均值

时间:2019-10-30 17:45:49

标签: javascript math

我正在尝试编写一个map / reduce来获取数组中每个数组的平均值。

例如。

[[1][2,3][4,5,6,7]] => [1, 2.5, 5.5] 

现在这是我的代码,结果是数组数组:

result.map(array => {
  return array.reduce((a, b) => (a + b)) / array.length;
})

const result = [
  [1],
  [2, 3],
  [4, 5, 6, 7]
]

console.log(result.map(array => {
  return array.reduce((a, b) => (a + b)) / array.length;
}))

非常感谢获得所需输出的任何帮助。就目前而言,我的输出减少到NaN的数组,而不是平均值。

2 个答案:

答案 0 :(得分:5)

您需要结束括号。

通过对长度未知的数组使用Array#reduce,您需要获取一个起始值,在这种情况下,结果的长度为零。

var result = [[1], [2, 3], [4, 5, 6, 7]],
    avg = result.map(array => array.reduce((a, b) => a + b, 0) / array.length);
    //                                                    ^^^                ^
    //                                                    optional           required

console.log(avg);

答案 1 :(得分:1)

您必须为reduce函数提供第二个参数,即a的初始值。所以:

result.map(array => {
  return array.reduce((a, b) => a + b, 0) / array.length;
});

您可能还需要确保除以array.length > 0