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

如何使用JavaScript将数组中连续的0转换为子数组?

JavaScript数组分组转换实现方案

要把给定的数组按规则转换,核心是将连续的0合并为数组(单个0也转成数组),1则保持单个元素,下面提供两种直观的实现方式:

方法一:使用reduce函数(简洁高效)

reduce是处理这种累加分组场景的利器,代码如下:

const test = [0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1];
const result = test.reduce((acc, current) => {
  const lastItem = acc[acc.length - 1];
  if (current === 0) {
    // 最后一项是数组,说明正在收集连续0,直接追加
    if (Array.isArray(lastItem)) {
      lastItem.push(current);
    } else {
      // 否则新建数组存当前0
      acc.push([current]);
    }
  } else {
    // 是1就直接加入结果
    acc.push(current);
  }
  return acc;
}, []);

console.log(result);
// 输出:[[0],1,[0],1,1,1,[0,0],1,[0,0,0,0],1]

方法二:使用普通for循环(直观易懂)

如果对reduce不太熟悉,用普通循环也能轻松实现:

const test = [0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1];
const result = [];
let zeroGroup = null;

for (const num of test) {
  if (num === 0) {
    // 还没开始收集0,就新建数组并加入结果
    if (!zeroGroup) {
      zeroGroup = [];
      result.push(zeroGroup);
    }
    zeroGroup.push(num);
  } else {
    // 遇到1,重置分组状态,直接加入1
    zeroGroup = null;
    result.push(num);
  }
}

console.log(result);

两种方法逻辑一致:遍历数组时跟踪当前是否在收集连续的0,根据当前元素类型决定是追加到分组数组还是直接添加单个元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 18:05:24