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
相关产品推荐
相关产品推荐

