2017-05-30 13 views
0

これはテキスト検索を行うことです。私は3つのvar:text、myNames、およびヒットから始めるように指示されました。私は「テキスト」の中に入れた私の名前を「ヒット」にプッシュするはずだった。CodeAcademy:JavaScriptの2番目の "For"ループのテキスト検索

私が使用してテキストを検索することである、ループの最初の理解:あなたの名前のであれば」、

for (i = 0 ; i <= text.length ; i++) { 
 
    if(text[i] === "S"); 
 
}

しかし、その後、私は本当に命令を理解していません11文字の長さですが、あなたのループでは、myNameの最初の文字がテキストで表示される場合は、11文字をヒットに追加する必要があります。

私はもっと混乱させるヒントを確認しました。「あなたのループは、最初のイテレータの値(つまり、i)にmyName変数の長さを足したときに停止する必要があります。

何ですか?私はヒントに従おうとしましたが、それは私に次のレッスンに行くことを許したので、本当のようでした。しかしコンソールは、単に 'S'

var text ="A string containing some text. \ I place my name here, Smit, \ a couple of times, so \ I need at least one more, \ Smit is it enough? \ Or we need more? \ Smit Smit Smit!"; 
 

 
var myName = "Smit"; 
 

 
var hits = []; 
 

 
for (i = 0 ; i <= text.length ; i++) { 
 
    if(text[i] === "S"); { 
 
     for (j = i ; j <= (text.length + myName.length); j++) { 
 
     hits.push("S");} 
 
      
 
     } 
 
}

enter image description here

ログインしかし、私が使用する必要がなぜ私が "(text.length + myName.length)" を理解していませんか?

答えて

0

あなたは命令を誤解していると思います。

「名前が11文字であれば、文字列にmyNameの最初の文字が表示された場合、ループで11文字が追加されます」という指示は、次のコードを意味します。

for (j = i; j < (i + myName.length); j++) 

あなたはi + myName.lengthの代わりtext.length + myName.lengthを使用する必要があります。 myNameの最初の文字がi番目の位置にある場合、myNameの最後の文字は(i + myName.length - 1)番目の位置になります。いくつかの文字列を書いて自分で確認することができます。

codecademyのチェックはあまり厳密ではないようですので、次のセクションに移動することができても、コードが100%正しいことを意味するわけではありません。

しかし、「myNameの最初の文字がテキストに表示された場合、ヒットするのに11文字を追加する」という説明は、わかりません。名前全体をチェックして、それをhitにプッシュするべきではありませんか?

+0

ええ、それは "S" –

関連する問題