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