簡體   English   中英

這個for循環和if語句如何工作?

[英]How does this for loop and if statement work?

試着弄清楚我自己的理解for循環和if函數的聲明是如何工作的。 這是因為搜索了這個挑戰,這個代碼更短,但結果與我的初始代碼相同。 困惑是最長的變量。 它存儲大於str.length(5)的單詞的最長長度 - 或者我可能是錯的。 對於某些未被理解的原因,語言(8)的長度不存儲在變量中,盡管5,10和18是。

function longestWord(str) {
    str = str.split(" ");
    var longest = 0;
    var word = null;
    for (var i = 0; i < str.length; i++) {
        if (longest < str[i].length) {
            console.log("str = " + str[i]);
            longest = str[i].length;
            console.log("longest = " + longest); //What happended to 8 for language?
            word = str[i];
        }
    }
    return word;
}
console.log(longestWord("Using the JavaScript language bademnostalgiastic"));

JavaScript長度為10個字符,在language之前進行測試,因此if測試失敗並被跳過。

它存儲大於str.length(5)的單詞的最長長度

不,它存儲了迄今為止看到的最長的長度。 當測試Using時它會變為5 ,但很快就會被覆蓋。

所有這一切它跟蹤最長的單詞(以及在存儲字符數longest )。 對於每次迭代,它測試以查看下一個字符串是否具有比當前記錄的最長字符串(由longest確定)更多的字符。 如果是這樣,它會存儲新的字符數,因為它是新的“最長的贏家”。

這是這里發生的事情:

  • 取一個字符串並將其拆分為單詞(由空格確定)
  • 此時你有一個字符串數組,所有字符串除以“”
  • 循環遍歷數組中的所有字符串
  • 如果您迭代的當前字符串具有比任何其他先前字符計數器更多的字符計數器,則將此當前字符計數存儲在變量longest字符中
  • 繼續循環並在前一點使用上述邏輯

所以在這個結尾處,你擁有實際的字符串(存儲在word )和字符數最多(存儲在longest的字符串)。

“JavaScript”的長度為10,比“語言”長。 由於“JavaScript”首先出現,“語言”不會長於最長,因此if語句將導致false。

array str[]={Using, the,JavaScript, language ,bademnostalgiastic}

迭代1

str[i]=Using

str.length=5 (a)

Longest =0   (b)

since (a)>(b)

Longest =5

word=Using

迭代2

str[i]=the

str.length=3 (a)

Longest =5   (b)

since (a)<(b)

Longest and word remain same

so,Longest =5

and,word=Using

迭代3

str[i]=JavaScript

str.length=10 (a)

Longest =5   (b)

since (a)>(b)



so,Longest =10

and,word=JavaScript

Iteration4

str[i]=language

str.length=8 (a)

Longest =10   (b)

since (a)<(b)

所以最長的保持不變

so,Longest =10

and,word=JavaScript

Iteration5

str[i]=bademnostalgiastic

str.length=18 (a)

Longest =10   (b)

since (a)>(b)



so,Longest =18

and,word=bademnostalgiastic

END OF LOOP

所以最長的詞bademnostalgiastic

這是一個細分:

str = str.split(" ");

這使得在空格上分割的字符串數組。

for (var i = 0; i < str.length; i++)

我們從這里開始, i (迭代器變量)為0.我們將繼續執行此循環,而i小於str的長度。 我們要提高i的各1個,我們通過這個循環走的時間。

if (longest < str[i].length)

在這里,我們檢查我們保存的longest是否小於我們正在查看的字符串長度。

longest = str[i].length;

這里我們分配新的最長字符串,因為這個字符串更長。

word = str[i];

我們也保存了這個詞,可能以后我們可以使用它。

return word;

循環結束后,我們將發回word作為結果。

console.log(longestWord("Using the JavaScript language bademnostalgiastic"));

這是您的電話和打印聲明。

您看到5,10和18的原因是因為您只在值大於您已經看到的值時打印出值。

暫無
暫無

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

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