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

如何将统计字符串e/E数量的for循环函数转为while循环?

问题分析与修复

你的while循环代码存在几个关键问题,导致测试用例全部返回0:

  • 循环条件错误:你把判断字符是否为e/E作为while的循环条件,这意味着只要第一个字符不是e/E,循环根本不会执行;就算第一个是,后续逻辑也完全不符合遍历需求。
  • 循环内逻辑错误:index += count的写法毫无意义,应该是每次循环让index自增1来遍历下一个字符;同时没有在循环内更新当前字符char,也没有判断字符是否符合条件来累加count。
  • 语法错误:代码末尾多了一个多余的}。

正确的while循环实现

我们可以完全对应原for循环的逻辑来改写:原for循环的核心是从index=0开始,遍历到index小于字符串长度,每次检查当前字符,符合条件就计数。对应的while循环写法如下:

function eCounter(word) {
  let count = 0;
  let index = 0;

  while (index < word.length) {
    const char = word[index];
    if (char === "e" || char === "E") {
      count += 1;
    }
    index += 1; // 每次循环后移动到下一个字符,避免无限循环
  }

  return count;
};

console.log(eCounter("apple")); // => 1
console.log(eCounter("appleapple")); // => 2
console.log(eCounter("Appleee")); // => 3

代码说明

  • 循环条件index < word.length保证我们能遍历字符串的每一个字符,和原for循环的终止条件完全一致。
  • 每次循环内先获取当前索引对应的字符,判断是否为e/E,符合条件就累加计数。
  • 必须执行index += 1,否则索引永远不会变化,会陷入无限循环。

内容的提问来源于stack exchange,提问作者J. Green

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 16:32:35