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

如何在JavaScript中按条件将数组拆分为多个子数组

用Array.reduce()拆分满足条件的数组

给定数组:

const arr = [1,2,3,4,5,6,7,8,25,26,27,28,29,50];

期望拆分结果:

[[1,2,3,4,5,6,7,8], [25,26,27,28,29], [50]]

直接用reduce就能实现需求,代码如下:

const arr = [1,2,3,4,5,6,7,8,25,26,27,28,29,50];

const result = arr.reduce((acc, current, index) => {
  if (index === 0) {
    acc.push([current]);
    return acc;
  }
  
  const lastSubArr = acc.at(-1);
  const lastNum = lastSubArr.at(-1);
  
  if (current - lastNum > 9) {
    acc.push([current]);
  } else {
    lastSubArr.push(current);
  }
  
  return acc;
}, []);

console.log(result);

逻辑说明

  • 初始化累加器acc为空数组,用来存储最终的子数组集合。
  • 第一个元素直接创建新子数组加入acc,因为没有前序元素可对比。
  • 从第二个元素开始,取acc中最后一个子数组的最后一个元素,和当前元素计算差值。
  • 如果差值超过9,就新建一个包含当前元素的子数组加入acc;没超过则把当前元素追加到最后一个子数组中。
  • 每次循环返回acc,最终得到拆分后的结果。

如果需要兼容递减数组,或者不管正负只要差值绝对值超过9就拆分,把判断条件改成Math.abs(current - lastNum) > 9即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 20:40:34