簡體   English   中英

查找數組中最長的單詞/字符串

[英]Find the longest word/string in an array

我剛開始學習 JavaScript。我正在嘗試編寫一個 JavaScript 來查找並打印數組中最長的單詞。 我想出了下面的代碼:

var longWords = ["Penelope", "Johny", "Aubumayang", "Czechoslovakia", "Slovenia"]
var longest = 0;
for (var i = 0; i < longWords.length; i++) {
if (longest < longWords[i].length) {
    longest = longWords[i];
  }
}

console.log(longest)

問題是它總是打印數組中的第一個元素。 這意味着longest = longWords[0] 現在,當我將longest = longWords[i]行更改為longest = longWords[i].length時,我得到了最長字符的計數。 請告訴我為什么它不起作用以及我如何使用for循環來做到這一點。

if (longest < longWords[i].length) {

應該是

if (longest.length < longWords[i].length) {

您可以根據字符串長度自定義排序,並獲取第一項:

longWords.sort(function(a, b) { 
    return b.length - a.length; 
});

這會將您的數組轉換為以下內容:

["Czechoslovakia", "Aubumayang", "Penelope", "Slovenia", "Johny"]

此時,您可以抓住第一個項目。 但請注意,在第一個之后可能會有其他字符串具有相同的長度。

至於上面的代碼, longest被聲明為一個數字,但后來設置為一個字符串。 我們感興趣的數字來自字符串的長度。 我們的條件應該是:

// No sense in looking this up twice
current = longWord[i];

if ( longest.length < current.length ) {
    longest = current;
}

我沒有找到最長的單詞,而是建議使用Array.prototype.sort()通過降低元素的長度來對數組進行排序:

var longWords = ["Penelope", "Johny", "Aubumayang", "Czechoslovakia", "Slovenia"],
    sorted = longWords.sort(function (a, b) {
    return a.length < b.length;
});

console.log(sorted);
// ["Czechoslovakia", "Aubumayang", "Penelope", "Slovenia", "Johny"]

JS小提琴演示

參考文獻:

var longest = 0;

for (var i = 0; i < longWords.length; i++) {
    if ( longWords[i].length > longest.length ) {
        longest = longWords[i];
    }
}

如果sort數組進行sort並打印第一個元素arr.[0]我可以輕松打印最長的單詞arr.[0]


var longWords = ["Penelope", "Johny", "Aubumayang", "Czechoslovakia", "Slovenia"];
var sorted = longWords.sort((a, b) => b.length - a.length );

console.log(sorted[0]);
// "Czechoslovakia"

還有另一種獲得最長元素的好方法,那就是使用reduce方法:

 var longWords = ["Penelope", "Johny", "Aubumayang", "Czechoslovakia", "Slovenia"]; var longest = longWords.reduce( (a, b) => a.length >= b.length ? a : b ); console.log(longest); 

let longest = 0;
for (let i = 0; i < longWords.length; i++) {
  let word = longWords[i];
  if (longest < word.length) {
    longest = word.length;
  }
}
console.log(longest);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM