0

だから、私は私の名前、アンドリューを識別し、それを配列にプッシュする「for」ループに取り組んでいますが、何か問題があります

/*jshint multistr:true */

var text = ("Andrew is really awesome and Andrew should be working on the project, but there is honestly nothing for Andrew to do.");
var myName = ("Andrew");
var hits = [];
for (var i = 0; i < text.length; i ++) {
    if (text[i] === "A") {
        for (var j = i; i + nyName.length; i ++) {
            hits.push(text[j]);
        }
    }
}

また、2 番目のループは、myName の最後に到達すると停止するはずです。

4

4 に答える 4

1

JSHINT を使用しているため、エラー メッセージを読むだけで、何が問題なのかが正確にわかります。

エラー:

  • 7 行目:for (var j = i; i + nyName.length; i ++) {

    「nyName」は定義されていません。

  • 3 行目:var myName = ("Andrew");

    「myName」は定義されていますが、使用されていません。

JSHINT は、それが何を伝えているかに注意を払わなければ、あまり役に立ちません。


また、内側のループが奇妙に見えます。

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

無限ループになりそうです。あなたはおそらくj別の条件で望んでいます。

于 2013-04-24T18:40:23.183 に答える
0

myNamefor ループ構文のスペルを間違えてnyName代わりに入力したため、その行に到達するとすぐにスクリプトが終了する可能性があります。

于 2013-04-24T18:36:46.607 に答える
0

参照したい for ループのタイプミスはmyName大きな問題のようです:

for (var j = i; i + nyName.length; i ++)
                    ^
于 2013-04-24T18:36:54.817 に答える
0

myName失敗するのはスペルミスだけではありません。i + myName.lengthfor ループは常に に評価されるため、ループを終了することはありませんtrue。また、値を増やす必要があります。jそうしないと、常に index の文字が取得されますi

これが修正されたループです。

for (var i = 0; i < text.length; i ++) {
    if (text[i] === "A") {
        for (var j = 0; j < myName.length; i++, j++) {
            hits.push(text[i]);
        }
    }
}
于 2013-04-24T18:45:41.967 に答える