[英]Finding longest word in a string javascript code that is not working on the last wordd
我已经通过使用 split 函数解决了这个问题,但是当我试图在 javascript 中查找字符串中最长的单词时,为什么我之前的 for-loop only 代码不起作用,我仍然感到困惑。 我正在编写的函数应该返回最长单词的字母数。 使用控制台后,每当我只使用一个单词时,它都会返回我初始化字母计数器的值(即 0)。 如果最长的单词是最后一个单词,则返回前面单词中第二长的单词。 如果最长的单词出现在除最后一个单词之外的任何地方,则结果是准确的。 似乎计算最后一个单词的字母有困难。 这是我的代码。
let lettCount = 0;
let largest = 0;
let spaceCheck = /\s/;
for (let i = 0; i < str.length; i++) {
if (spaceCheck.test(str[i]) == true) {
if (lettCount > largest) {
largest = lettCount;
}
lettCount = 0;
}
else {
lettCount++;
}
}
return largest;
您应该能够使用String.split()和Math.max()显着简化此处的逻辑。
我们将字符串拆分为一个数组,然后使用Array.map()获取每个单词的长度,然后使用 Math.max() 和Spread 语法来获取最长的单词。
let str = 'the longest word is dinosaur'; function getLongest(str) { return Math.max(...str.split(/\\s/).map(s => s.length)); } console.log('Longest word:', getLongest(str));
你也可以用String.split()和Array.reduce() 来做到这一点,这甚至更简单一点:
let str = 'the longest word is dinosaur'; function getLongest(str) { return str.split(/\\s/).reduce((acc,s) => s.length > acc ? s.length: acc, 0); } console.log('Longest word:', getLongest(str));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.