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

JavaScript如何将布尔数组中连续true值分组为嵌套子数组

实现方案

核心逻辑

遍历原数组,过程中维护临时数组存储当前连续的true值:

  • 遇到true时,直接推入临时数组
  • 遇到false时,若临时数组不为空,就将临时数组推入结果数组,同时重置临时数组
  • 遍历结束后额外检查一次临时数组,避免末尾的连续true没有被推入结果数组

代码实现

方法1:使用reduce实现

const a = [false, true, true, false, true, false, false, false, true, true, false, true, true, true]

const result = a.reduce((acc, curr) => {
  if (curr) {
    acc.current.push(curr)
  } else if (acc.current.length) {
    acc.output.push(acc.current)
    acc.current = []
  }
  return acc
}, { output: [], current: [] })

// 处理末尾剩余的连续true
if (result.current.length) {
  result.output.push(result.current)
}

console.log(result.output) // [[true, true], [true], [true, true], [true, true, true]]

方法2:使用普通遍历实现

const a = [false, true, true, false, true, false, false, false, true, true, false, true, true, true]
const res = []
let temp = []

for (const val of a) {
  if (val) {
    temp.push(val)
  } else if (temp.length) {
    res.push(temp)
    temp = []
  }
}
// 收尾处理
if (temp.length) res.push(temp)

console.log(res) // [[true, true], [true], [true, true], [true, true, true]]

两种方法都只需要遍历一次原数组,时间复杂度为O(n),性能最优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:12:03