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

JavaScript实现提取句子最长单词算法输出错误问题求助

问题根因

你的代码核心逻辑错误是长度对比的基准字符串mystring在循环过程中从未更新,始终保持初始的空字符串状态。
按照你的设计思路,mystring应该存储当前遍历到的最长单词,用于和后续单词做长度对比,但你只在满足条件时更新了最长单词的下标index,没有同步更新mystring的值,这就导致所有长度大于0的单词都会触发下标更新逻辑,最终返回的实际是遍历到的最后一个非空单词,而非真正的最长单词。你测试用例出现返回United的异常结果,大概率是输入字符串的末尾/中间存在多余空格,拆分后的数组出现空元素,截断了后续正常单词的下标更新。

修复方案

只需要在更新下标index的同时,同步更新对比基准mystring即可,修改后的代码如下:

function longestWord(sentence) {
  // 存储最长单词在数组中的下标
  let index = 0;
  // 存储当前最长单词,用于后续长度对比
  let mystring = "";
  // 拆分句子为单词数组
  let arr = sentence.split(" ");
  // 遍历数组
  for (let p = 0; p < arr.length; p++) {
    if (arr[p].length > mystring.length) {
      index = p;
      // 新增:同步更新当前最长单词
      mystring = arr[p];
    }
  }
  return arr[index];
}
console.log(longestWord("I love the United States of America"));
// 输出结果:America

你也可以省略mystring变量,直接用当前下标的单词长度和已记录的最长单词长度对比,简化代码:

function longestWord(sentence) {
  let arr = sentence.split(" ");
  let maxLengthIndex = 0;
  for (let p = 0; p < arr.length; p++) {
    if (arr[p].length > arr[maxLengthIndex].length) {
      maxLengthIndex = p;
    }
  }
  return arr[maxLengthIndex];
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:27:03