我正在研究FreeCodeCamp基本算法的脚本编写部分,而我对此仍然有些困惑。
基本上-我需要找到句子中最长的单词。
stringArray
和longestString
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/