背景:
arr.reduce()实现累加器。或者实现求数组内的平均值。
核心代码:
/**
* 计算数字数组的平均值。
*
* @param {Array<number>} arr - 数字数组。
* @return {number} 数组的平均值。
*/
const average = (arr) => {
return flat(arr).reduce((a, b) => a + b, 0) / arr.length;
};
实际代码:
如果在计算一个数组的平均值的时候,已知数组是个多维数组。使用flat()把多维数组转为一维数组。
/**
* 将嵌套数组展平成一维数组。
*
* @param {array} arr - 需要展平的数组
* @return {array} 展平后的一维数组
*/
const flat = (arr) => {
return arr.reduce((pre, value) => {
return Array.isArray(value) ? [...pre, ...flat(value)] : [...pre, value];
}, []);
};
/**
* 计算数字数组的平均值。
*
* @param {Array<number>} arr - 数字数组。
* @return {number} 数组的平均值。
*/
const average = (arr) => {
return flat(arr).reduce((a, b) => a + b, 0) / arr.length;
};
控制台效果展示: