簡體   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