課題内容
str
を引数としてとりその中で一番文字数がある単語をその単語の数で返してくれる関数を作る。
/*
Return the length of the longest word in the provided sentence.
Your response should be a number.
*/
function findLongestWord(str) {
return str.length;
}
findLongestWord("The quick brown fox jumped over the lazy dog");
ということで大半をこの辺から持ってきてしまいましたが(笑)
function findLongestWord(str) {
str = str.split(' ');
var longest = 0;
for (var i=0; i < str.length; i++) { // str.length = # of words in "" = 9
if (longest < str[i].length) {
longest = str[i].length;
}
} return longest;
}
findLongestWord("The quick brown fox jumped over the lazy dog");
簡単な流れを解説すると、
-
str
に"The quick brown fox jumped over the lazy dog"が入る。 -
.split(' ')
で各単語がstr
配列に入る。 -
longest
= 0,i
= 0 -
i < str.length
にしたのはi
はカウンターとして置いていて配列の各単語を巡回する。つまりその回数=str.length
が最大なので、i
=str.length
になるまで(9回)以下を実行しろということ。 -
longest
(初期値は0)と各単語を比べてもしlongest
のほうが短かった場合はその単語の数をlongest
がコピーするイメージ。str[i].length
とfor loopのi=0
で処理毎にi++
を使えば確かに単語を一個一個見ていくことが出来ると納得。 - #5をひたすら繰り返して一番大きい単語の数は全ての処理が終わった後に返してくれる。