我正在研究FreeCodeCamp基本算法的脚本编写部分,而我对此仍然有些困惑。

基本上-我需要找到句子中最长的单词。

  • 我设置了两个变量,stringArraylongestString
  • 我将参数中的每个单词设置为一个数组
  • 我遍历该数组,如果单词longestString比最后一个字符长,则将其写入一个字长。
  • 我返回变量longestString

  • 为什么这不起作用?

    在评估longestString.length时,我不断收到错误:



    似乎if语句未在我的for循环中运行。有什么想法吗?

    提前致谢!

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


    上面的代码产生错误:

    最佳答案

    要修复您的代码,您需要给longestString一个初始值,在循环中使用<而不是<=并分配实际的字符串而不是其长度(在if内)

    let stringArray = [];
    let longestString;
    function findLongestWordLength(str) {
      stringArray = str.split(" ");
      longestString = stringArray[0]; // give longestString an initial value
      for (let i = 0; i < stringArray.length; i++) { // use < instead of <=
        if (stringArray[i].length > longestString.length) {
          longestString = stringArray[i]; // assign the string not the length
        }
      }
    
      return longestString;
    }
    
    var result = findLongestWordLength("The quick brown fox jumped over the lazy dog");
    console.log(result);


    您可以使用以下技巧来缩短功能:将字符串拆分为单词数组,然后按单词的长度对其进行排序,然后选择第一个:

    function findLongestWordLength(str) {
      const longest = str.split(" ").sort((a, b) => b.length - a.length)[0];
      return longest;
    }
    
    const result = findLongestWordLength("The quick brown fox jumped over the lazy dog");
    console.log(result);

    关于javascript - if语句不会在for循环中运行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57663014/

    10-09 15:05