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

JavaScript:统计连续字符出现次数的函数错误排查

问题分析与修复

你的代码存在三个核心问题,导致输出结果不符合预期:

1. 切换字符时错误记录新字符而非前一个字符

当遇到与前一个不同的字符时,你将当前字符(chunk)和计数存入数组,但实际上应该记录前一个字符的计数与字符。比如从连续的a切换到b时,正确操作是存入[4, 'a'],而非[4, 'b']。

2. 计数重置逻辑错误

切换字符后你把counter重置为0,但此时新字符已经出现了一次,应该重置为1,否则后续计数会少算当前新字符的首次出现。

3. 循环结束后未处理最后一组连续字符

遍历完所有字符后,最后一组连续字符的计数还未被添加到结果数组中,导致这部分数据丢失。


修正后的代码

function consecutiveArray(str) {
  const chunks = str.split("");
  // 处理空字符串边界情况
  if (chunks.length === 0) return [];
  
  let counter = 1;
  const finalArray = [];
  let prevItem = chunks[0];

  for (let i = 1; i < chunks.length; i++) {
    const chunk = chunks[i];
    if (prevItem === chunk) {
      counter++;
    } else {
      finalArray.push([counter, prevItem]);
      counter = 1;
      prevItem = chunk;
    }
  }
  // 补充最后一组连续字符的记录
  finalArray.push([counter, prevItem]);
  
  return finalArray;
}

console.log(consecutiveArray('aaaabccaadeeee'));
// 输出:[[4, 'a'], [1, 'b'], [2, 'c'], [2, 'a'], [1, 'd'], [4, 'e']]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 19:10:32