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

JavaScript如何提取数组中满足条件的连续元素并分组

问题描述

给定测试数组:

[500, 250, 380, 250, 230, 100, 700, 900, 200, 100, 10, 800, 5]

需要实现逻辑:提取数组中所有值小于等于350的元素,仅保留连续相邻的满足条件的元素,按连续段分组,期望返回结果为:

[[250], [250, 230, 100], [200, 100, 10], [5]]

原有代码的核心问题:

  • 没有定义存储当前连续片段的临时变量,无法区分不同的连续分组
  • 判断逻辑存在缺陷,仅校验当前元素和下一个元素同时满足条件的场景,既会漏掉每个连续段的最后一个元素,也无法在连续段中断时完成分段存储。
实现方案

核心思路是遍历过程中持续累积符合条件的元素到临时片段,遇到不符合条件的元素时,就把当前累积的非空片段存入最终结果,再清空临时片段重新累积;遍历结束后需要额外处理数组末尾残留的连续片段,避免漏存。

const array = [500, 250, 380, 250, 230, 100, 700, 900, 200, 100, 10, 800, 5]
const result = []
// 临时存储当前正在遍历的连续符合条件的片段
let currentSegment = []

array.forEach(item => {
  if (item <= 350) {
    currentSegment.push(item)
    return
  }
  // 遇到不符合条件的元素,若当前有累积的片段就存入结果
  if (currentSegment.length) {
    result.push(currentSegment)
    currentSegment = []
  }
})
// 处理数组末尾最后一段符合条件的元素
if (currentSegment.length) {
  result.push(currentSegment)
}

运行上述代码即可得到预期的分组结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 09:48:27