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

如何使用JavaScript将数组中大于2的连续元素分组为子数组

正确实现代码

你可以直接使用如下reduce版本的实现,输出完全符合要求:

const A = [1,2,3,5,6,7,8,10,0,1,1,2,4,10,6,7,3];
const result = A.reduce((acc, curr) => {
  // 遇到2就新建子数组,作为分组的起始
  if (curr === 2) {
    acc.push([curr]);
    return acc;
  }
  const lastSubArray = acc.at(-1);
  // 存在正在收集的子数组,且当前元素大于2就加入分组
  if (lastSubArray && curr > 2) {
    lastSubArray.push(curr);
  }
  return acc;
}, []);

console.log(result); 
// 输出:[[2,3,5,6,7,8,10],[2,4,10,6,7,3]]

原代码的问题说明

你写的代码存在几个明显的逻辑问题:

  1. reduce初始值为空数组,第一次遍历取acc[acc.length - 1]会得到undefined,访问lastSubArray[lastSubArray.length - 1]直接报错
  2. 没有处理新建子数组的触发逻辑,规则里分组都是以2为起始,你没有对应的判断
  3. 逻辑冲突:你同时写了满足条件时acc.push(current)和无条件acc[acc.length - 1].push(current),会导致元素重复添加,也不符合分组规则

内容的提问来源于stack exchange,提问作者Uday Kumar Naidu Galidevara

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:24:05