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

如何统计数组中相邻匹配项的连续出现次数并返回对应计数值

数组连续相邻相同元素计数实现

需求说明

需要统计数组中所有相邻匹配元素的连续出现次数,要求如下:

  • 用类似map()的遍历循环实现,不需要存储当前元素之外的已统计内容
  • 每组连续相同元素全部统计完成后,才输出可用的计数结果,用于为对应组预留存储空间
  • 最终逐行输出的计数结果符合预期值

示例数据

给定示例数组:

const array = ['ball', 'batter', 'batter', 'amount', 'amount', 'github', 'github', 'github', 'account', 'account', 'account', 'account', 'account', 'account', 'account', 'github', 'github', 'github']

预期输出结果依次为:1、2、2、3、7、3

实现代码

// 初始化第一个元素的计数
let currentItem = array[0]
let count = 1

array.forEach((item, index) => {
  // 第一个元素已初始化,跳过处理
  if (index === 0) return

  if (item === currentItem) {
    // 当前元素和匹配元素一致,计数累加
    count++
  } else {
    // 遇到不同元素,当前组统计完成,输出计数
    console.log(count)
    // 重置为新组的初始值
    currentItem = item
    count = 1
  }

  // 遍历到数组末尾,输出最后一组的计数
  if (index === array.length - 1) {
    console.log(count)
  }
})

实现说明

  • 全程仅维护currentItem(当前匹配的元素值)和count(当前连续计数)两个变量,没有额外存储历史统计数据,内存占用极低
  • 只有在当前连续组统计结束(遇到不同元素/遍历到数组末尾)时才输出count,此时的计数是最终可用值,可直接用于预留空间的计算
  • 运行后console.log会依次输出1、2、2、3、7、3,完全符合预期要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:24:04