提供された文の中で最も長い単語の長さを返すため。 私の試み:再帰を使用して文中の最も長い文字列を検索する(Array.prototype.splice()メソッド)
function findLongestWord(str) {
var arr = str.split(" ");
function re(arr) {
if (arr[0].length >= arr[1].length) {arr.splice(1,1); return re(arr);}
/*if the first element's length is larger than the second element's length,
splice the smaller element, then call its own function re(arr) using the
array with the second element being spliced, which to my understanding
is calling
re(["Theeeee","brown","fox","jumped","over","the","lazy","dog"])*/
else if (arr[0].length < arr[1].length) {arr.splice(0,1); return re(arr);}
}
return arr[0].length;
findLongestWord("Theeeee quick brown fox jumped over the lazy dog");
if文最初の後のコメントに関しては、私は再帰がどのように機能するかについてのあらゆる側面を誤解したのですか?ループのために使用して動作します
コード:
function findLongestWord(str) {
var arr = str.split(" ");
for (i = arr.length; i > 1 ;i--) {
if (arr[0].length >= arr[1].length) {arr.splice(1,1);}
else if (arr[0].length < arr[1].length) {arr.splice(0,1);}
}
return arr[0].length;
findLongestWord("The quick brown fox jumped over the lazy dog");
コードは何をしますか?それは期待どおりに機能しますか?そうでない場合は、あなたはどの入力を受け入れていますか、何を取り戻していますか?また、あなたのコードのフォーマットが乱れています。このコードは構文エラーを引き起こします。適切な書式設定と改行を使用してください。コードをあまりにも圧縮する理由はありません。 1行に1つのステートメントを使用します。 –
こんにちはChristopher、アドバイスをいただきありがとうございます。後ほど書式設定の問題について深く掘り下げて説明します。今のところ、文の中で最も長い単語の長さを取得したいと思います。最初のコードはFreeCodeCampの挑戦に合格していませんが、forループを使って試行していますが、最初のコードについて混乱しています私はコールバック(arr)、私は何かを逃したのですか?コードは私に文の配列の最初の要素の長さを与え続けます、なぜ私は最初のif文の後にコードでコメントしたステップを実行していませんか? –