課題内容
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をひたすら繰り返して一番大きい単語の数は全ての処理が終わった後に返してくれる。
