我正在尝试编写一个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
的数组,而不是平均值。
答案 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