2016-12-15 1 views
-3

これはCodeAcademyのjavascriptコースです。私はこんなことに固執しており、どのように進むべきかわからない。テキストを配列にプッシュするにはどうすればよいですか? (Javascript)

"text"変数で "Alex"という名前を検索する必要があります。次に、2番目のForループが文字を「ヒット」配列にプッシュする必要があります。

 /*jshint multistr:true */ 
var text = "My name is Alex. What is yours? Again, my name is Alex"; 
var myName = "Alex"; 
var hits = []; 

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

if(i === text["A"]){ 


for(var j = i; i + myName.length; i++){ 

    hits.push("Alex");} 

} 


    } 
+2

、すべてのjavascriptの文字列は https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/が付属してindexOfの機能を調べますGlobal_Objects/String/indexOf – derp

+2

[split](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split)を文字列に使用すると、 [concat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat)を配列上に置くか、pushを押します。[apply](https://developer.mozilla .org/en-US/docs/Web/JavaScript /リファレンス/グローバル_オブ​​ジェクト/機能/適用)on配列 –

+0

'text'文字列全体を一度に1文字ずつ繰り返しています。 'i'は数値' if(i === text ["A"]){'は' 'A" 'と一致しないはずです。 'text [" A "]'は 'text'文字列のインデックスを取得しません。 'text [i] ===" A "' forループの2番目の条件はありません。 '' A ''にマッチするだけであれば、' 'break'ループを実行しなければ' 'A''と '' Again ''もマッチします。 – guest271314

答えて

0

text文字列を一度に1文字ずつ繰り返しています。 iif(i === text["A"]){の数字は"A"と一致しません。 text["A"]text文字列のインデックスを取得しません。 text[i] === "A"を使用してください。 2番目のループの条件はありませんi + myName.length;代用j < i + myName.length。 「A」にのみ一致する場合は、breakアウターforループがない場合は、「Again」の「A」にも一致します。

現在、"A"の最初の一致の後に"lex"の後にスペース" "が続くチェックはありません。

あなたは、代わりmyNameの一致を確認し、言葉を繰り返す、text内のすべての単語の配列を取得するために.split()または.match()を使用することができます。ヒントとして

var text = "My name is Alex. What is yours? Again, my name is Alex"; 
 
var myName = "Alex"; 
 
var hits = []; 
 

 
outer: for (var i = 0; i < text.length; i++) { 
 
    if (text[i] === "A") { 
 
    for (var j = i; j < i + myName.length; j++) { 
 
     hits.push(text[j]); 
 
    } 
 
    break outer; 
 
    } 
 
} 
 

 
console.log(hits);

関連する問題