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

求助:使用Math.max获取字符串最长单词长度的JS代码问题

排查你的代码问题,轻松获取最长单词长度

我帮你找出了代码里的几个关键问题,咱们一步步来修正:

问题点拆解

  • 循环边界越界:你的for循环条件写的是i <= word.length,但数组的索引是从0开始的,word数组的最后一个元素索引是word.length - 1。当i等于word.length时,word[i]会是undefined,调用.length就会报错,所以要改成i < word.length。
  • Math.max调用方式错误:Math.max(array)这种写法不生效,因为Math.max需要接收一个个独立的数值参数,而不是数组。你可以用ES6的扩展运算符把数组展开:Math.max(...array),或者用Math.max.apply(null, array)来兼容旧环境。
  • 变量名拼写错误:你定义的变量是longestWord,但return的时候写成了longesWord(少了一个t),这会导致引用错误。
  • 无效的console.log:return语句之后的console.log(longestWord)永远不会执行,因为函数在return后就终止了;而且循环里的console.log(Math.max(array))也没必要放在循环内,应该放在循环结束后。

修正后的代码

function findLongestWord(str) {
  var word = str.split(" ");
  var array = [];
  console.log(word); // 打印分割后的单词数组
  for (let i = 0; i < word.length; i++) { // 修正循环边界
    var alphabetsInWord = word[i];
    array.push(alphabetsInWord.length);
  }
  console.log(array); // 打印每个单词的长度数组
  var longestWord = Math.max(...array); // 修正Math.max的调用方式
  console.log(longestWord); // 打印最长单词长度
  return longestWord; // 修正变量名拼写
}

findLongestWord("The quick brown fox jumped over the lazy dog");

额外优化建议

其实你还可以简化代码,不用额外的数组存储长度,直接在循环里跟踪最大值,这样更高效:

function findLongestWord(str) {
  var words = str.split(" ");
  var maxLength = 0;
  for (let word of words) {
    if (word.length > maxLength) {
      maxLength = word.length;
    }
  }
  return maxLength;
}

或者用更简洁的数组方法:

function findLongestWord(str) {
  return str.split(" ").reduce((maxLen, word) => Math.max(maxLen, word.length), 0);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:40:05