在javascript中查找字符串中最长的单词

2fjabf4q  于 2023-03-06  发布在  Java
关注(0)|答案(3)|浏览(99)

我的代码中出现错误
下面是代码

function findLongestWordLength(str) {
  let word = str.split(" ");
  console.log(word);
  let totalWords = word.length;
  for (let i = 0; i <= totalWords; i++) {
    let max = '';
    let cmax = word[i].length;
    console.log(cmax);
    if (cmax > max) {
      max = cmax;
    }
  }
  console.log(max);
}
findLongestWordLength("The quick brown fox jumped over the lazy dog");

我很困惑,因为它在控制台中显示cmax,但之后给出了一个错误。

46qrfjad

46qrfjad1#

如前所述,循环太远,需要将最大值移到循环之外。
此外,请返回值,而不是在函数中记录控制台
这是一个更简洁的版本-注意这里没有太多的输入控制

const findLongestWordLength = str => str && str
  .match(/\w+/g) // find all words without spaces and punctuation
  .sort((a,b) => a.length - b.length) // sort ascending on length
  .pop()  // pop the last word
  .length; // return its length
  
console.log(
  findLongestWordLength("The quick brown fox jumped over the lazy dog")
);

console.log(
  findLongestWordLength("fox")
)

console.log(
  findLongestWordLength("") // not handled
)
j7dteeu8

j7dteeu82#

这是我以前学习时遇到的一个有趣的问题。
你写的代码的问题是,你在for循环中声明了max变量,这意味着它在每次迭代时都会被重新初始化为空字符串,你应该把max变量声明移到循环之外。
此外,需要将max变量初始化为0而不是空字符串,因为您希望比较单词的长度,并且需要更改if语句中的条件,以便与〉而不是〉=进行比较。
以下是代码的更正版本-在测试的句子中,单词“jumps”最长,因此输出为6。

function findLongestWordLength(str) {
  let word = str.split(" ");
  let totalWords = word.length;
  let max = 0;

  for (let i = 0; i < totalWords; i++) {
    let cmax = word[i].length;

    if (cmax > max) {
      max = cmax;
    }
  }

  console.log(max);
}

findLongestWordLength("The quick brown fox jumped over the lazy dog");
4dc9hkyq

4dc9hkyq3#

您得到Index out of Bound错误,这意味着您循环数组的次数超过了数组的长度。这是由于i <= totalWords造成的。它应该只为i < totalWords
此外,您还需要在循环外部定义max = ''(我建议将其定义为任何负整数,如-1),如max=-1

function findLongestWordLength(str) {
      let word = str.split(" ");
      console.log(word);
      let totalWords = word.length;
      let max = '';
      
      for(let i = 0; i < totalWords; i++){
            
        
        
        let cmax = word[i].length;
        
        //console.log(cmax);
        
        if(cmax > max){
          max = cmax;
        }
      }
      
      console.log(max);     
      
    }

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

相关问题