2013-04-24 60 views
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]); 
     } 
    } 
} 

另外,第二个循环在到达myName的末尾时应该停止。

+0

我想你的意思是(i-j) svk 2013-04-24 18:38:38

回答

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

0

您在for循环语法中拼写为myName,并输入nyName,所以剧本一旦遇到该行就会死机。

0

中有排印错误的for循环要参考myName似乎是一个很大的问题:

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

哦,我明白了,谢谢! – 2013-04-24 18:37:51

0

拼写错误myName不是唯一失败的部分。你for循环将永远不会结束循环,因为i + myName.length将始终评估为true。您还需要增加j的值,否则它将始终获得索引为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]); 
     } 
    } 
} 
+0

我不确定这会起作用,因为j应该与我一致。 j并不总是 2013-04-26 15:13:20

+0

给定的代码有效。 'i'是正在检查的当前角色。如果找到''A'',它将消耗'myName.length'的字符。概念验证http://jsfiddle.net/97HsD/ – Bart 2013-04-26 16:42:58