繁体   English   中英

在对最后一个字不起作用的字符串javascript代码中查找最长的单词

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM