嗨,我正在嘗試比較句子中每個單詞的長度。我將這句話轉換成一個陣列,但后來我迷失在我的代碼中。我嘗試了 2 種方法 - for loop 和 reduce(),但都沒有奏效。我的代碼中發生了什么?
Reduce() => 當我嘗試運行該函式時,這個給了我 undefined 。我收集它是因為 max.length/word.length,但是如何使用 reduce() 將我的字串變成長度?
function findLongestWordLength(str) {
let brokenDown = str.split(' ')
brokenDown.reduce((max, word) => {
return Math.max(max.length, word.length)
})
}
findLongestWordLength("The quick brown fox jumped over the lazy dog");
For loop => 這個給了我第一個單詞的長度而不是 maxLength。我猜可能是因為我的 var strLength 不是一個陣列,但是如何將它變成一個包含每個索引長度的陣列?
function findLongestWordLength(str) {
let brokenDown = str.split(' ')
for(let i = 0; i < brokenDown.length; i ) {
var strLength = brokenDown[i].length
}
return Math.max(strLength)
}
findLongestWordLength("The quick brown fox jumped over the lazy dog");
我知道這應該是非常基本和簡單的,我無法理解這里出了什么問題。
uj5u.com熱心網友回復:
在您發布的第二種方法中,您沒有正確設定最大值。您正在設定一個名為 的變數strLength,但您Math.max在回圈之外。所以你永遠不會得到最大值,除非它恰好是陣列中的最后一個單詞。
function findLongestWordLength(str) {
let brokenDown = str.split(' ')
let mxLen = 0
for(let i = 0; i < brokenDown.length; i ) {
mxLen = Math.max(mxLen, brokenDown[i].length);
}
return mxLen
}
uj5u.com熱心網友回復:
const maxLength = (str) => {
const words = str.split(' ');
const lengths = words.map((word) => word.length);
return Math.max(...lengths);
}
console.log(maxLength('The quick brown fox jumped over the lazy dog'));
uj5u.com熱心網友回復:
如果你想使用這種Math.max方法,首先提取每個單詞的長度,然后將它們傳遞給Math.max.
function findLongestWordLength(str) {
let brokenDown = str.split(' ')
let lengths = brokenDown.map(word => word.length);
return Math.max(...lengths);
}
console.log(findLongestWordLength("The quick brown fox jumped over the lazy dog"));
如果要采用for回圈方法,則必須在回圈時保持 maxLength,并在回圈遇到更長的單詞時對其進行更新。
function findLongestWordLength(str) {
let brokenDown = str.split(' ')
let maxLength = 0;
for (let i = 0; i < brokenDown.length; i ) {
const wordLength = brokenDown[i].length;
if (wordLength > maxLength) {
maxLength = wordLength;
}
}
return maxLength;
}
console.log(findLongestWordLength("The quick brown fox jumped over the lazy dog"));
uj5u.com熱心網友回復:
沒那么難做...
const findLongestWordLength = str =>
str.split(' ').reduce((r,s)=>Math.max(r,s.length), 0)
console.log( findLongestWordLength("The quick brown fox jumped over the lazy dog") )
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/433034.html
標籤:javascript 数组 for循环
下一篇:在PHP中使用回圈列印多維陣列
