gpt4 book ai didi

javascript - if 语句不会在 for 循环中运行?

转载 作者:行者123 更新时间:2023-11-29 10:55:50 24 4
gpt4 key购买 nike

我正在学习 FreeCodeCamp 基本算法脚本部分,但我有点卡在这个部分。

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

  1. 我设置了两个变量,stringArraylongestString
  2. 我将参数中的每个单词设置为数组中的一个项目
  3. 我遍历该数组,如果它比最后一个长,则将一个字长写入变量 longestString
  4. 我返回变量longestString

为什么这不起作用?

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

undefined is not an object

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");

上面的代码产生错误:

"Uncaught TypeError: Cannot read property 'length' of undefined"

最佳答案

要修复您的代码,您需要提供 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com