You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS中实现数组切片分块后,如何用reduce求各块平均值?

解决方案:用reduce计算分块数组的平均值

嘿,你已经把数组分块的部分搞定得很棒啦!接下来结合reduce计算每个分块的平均值其实非常直观,咱们直接上代码再拆解细节:

完整实现代码

var data = [0,1,2,3,4,5];

function chunk(arr, len) {
  var chunks = [];
  var i = 0;
  var n = arr.length;
  while (i < n) {
    chunks.push(arr.slice(i, i += len)); // 得到 [[0,1,2], [3,4,5]]
  }
  return chunks;
}

// 计算每个分块的平均值
var dataOptimised = chunk(data, 3).map(function(chunk) {
  // 用reduce累加分块内的所有元素
  const sum = chunk.reduce(function(total, currentNum) {
    return total + currentNum;
  }, 0); // 初始值设为0,确保累加从0开始
  return sum / chunk.length; // 总和除以元素个数得到平均值
});

console.log(dataOptimised); // 输出: [1, 4]

分步解释

  1. 先分块:调用你写的chunk(data, 3),把原数组分割成[[0,1,2], [3,4,5]]
  2. 遍历每个分块:用map方法遍历分块后的数组,对每个分块单独处理
  3. 用reduce求和:对每个分块,reduce会从初始值0开始,把分块里的每个元素依次加到总和里。比如第一个分块[0,1,2],累加后得到0+0+1+2=3
  4. 计算平均值:用分块的总和除以分块的长度(这里每个分块长度都是3),得到平均值3/3=1和12/3=4,最终组成目标数组[1,4]

简化版(ES6箭头函数)

如果你的运行环境支持ES6语法,还可以把代码简化得更简洁:

var dataOptimised = chunk(data, 3).map(chunk => 
  chunk.reduce((total, num) => total + num, 0) / chunk.length
);

内容的提问来源于stack exchange,提问作者lovemyjob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:47:34