0

所以,我正在研究一个“for”循环,它将识别我的名字 Andrew,并将其推送到一个数组中,但它有问题

/*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]);
        }
    }
}

此外,第二个循环应该在到达 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

您在 for 循环语法中拼写错误myName并改为键入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并不是唯一失败的部分。您的 for 循环将永远不会结束循环,因为i + myName.length将始终评估为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 回答