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

FreeCodeCamp find longest word题目代码运行错误求助

代码错误排查

你的代码无法正常运行是因为存在3处语法、逻辑问题:

  • 循环条件存在两个错误:一是数组长度属性拼写错误,正确写法是length,你写成了lentgh;二是循环判断逻辑写反,for循环需要在计数器n小于数组长度时持续遍历,你写的n > arrayString.lentgh会导致循环从初始化后就直接判定不满足条件,根本不会执行循环体内的逻辑。
  • 循环内返回逻辑错误:你在if判断分支里只要遇到比当前记录长度更长的单词就直接return,会让函数直接终止运行,不会遍历完数组剩余的元素,如果后面还有更长的单词就会被漏统计。这里只需要更新记录的最大长度值即可,不需要提前返回。
  • 缺少边界兼容:如果传入的字符串没有任何匹配的单词(比如空字符串、全是符号的字符串),str.match(/\w+/g)会返回null,此时直接访问arrayString[0].length会抛出类型错误,虽然你当前的测试用例不会触发这个问题,但函数需要做兼容处理。
修正后代码
function findLongestWordLength(str) {
  const wordMatchReg = /\w+/g;
  const wordList = str.match(wordMatchReg) || [];
  // 无匹配单词直接返回0
  if (wordList.length === 0) return 0;

  let maxWordLength = wordList[0].length; 
  // 修正循环条件:拼写修正、判断符改为小于
  for (let n = 1; n < wordList.length; n++){
      if (maxWordLength < wordList[n].length){
          // 仅更新最大长度,不提前返回
          maxWordLength = wordList[n].length;
      }
  } 
  return maxWordLength;
}

// 测试用例运行
console.log(findLongestWordLength("Thep quick brown fox jumped over the lazy dog"));
// 输出结果:6(对应最长单词jumped的字符长度)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 09:36:24