2013-12-15 234 views
0

我想在Codecademy学习JavaScript。我正在研究关于for循环的this problem,我无法弄清楚我的代码有什么问题。它说“在条件表达式中赋值”,但我不知道这意味着什么。这是说错误在第二个for声明。条件表达式中的赋值

目标是将hits的值更改为text变量字符串中包含的名称。

这里是我的代码:

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

+1

作业应该做什么?有条件的,如'if'。 –

+1

“text”在哪里? – HICURIN

+1

给出的任务链接 –

回答

2

=是分配,但在条件语句中,你需要检查相等(==),检查,如果事情是更大(>),检查,如果事情是少(<)等要指定变量j的长度myName而不是在这条线的一些检查条件:

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

相反,你可能需要做这样的事情:

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

但是,这可能不一定是Codecademy Assignment的解决方案,但它会解决您特定的javascript错误。玩弄并阅读<,>,==和其他条件提到here试图找出什么工作。

编辑:如果您想解决您的整个问题,在问题中发布问题链接并不仅仅是提及您遇到的具体错误,而是解释整个问题。话虽如此,你在这里错过了几件事:

  1. 你正在做任务,而不是像上面解释的那样检查一个条件。
  2. Franklin在注释中提到您忘记了在for循环中增加j。你需要做j++
  3. 您并未停在字符串中的正确位置。正如Codecademy所说的那样:“...当您的第二个for循环在字符串+ myName.length达到当前点时应该停止。”这意味着您需要停止在text.length + myName.length而不是仅仅myName.length。这也意味着你应该使用<而不是<=,正如我上面的建议。

把所有的一起,解决的办法是把这个行:

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

代替这一行:

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

好吧我改变了这一点,这就是codecademy所说的:糟糕,再试一次。小心:你的第二个'for'循环应该在到达字符串+ myName.length中的当前点时停止。 – maxgee

+1

@maxgee递增j – Franklin

+0

我编辑了我的答案,并试图给出更多的解释。 – stiemannkj1

2

将其更改为for (var j = i; j === myName.length;) {

你使用,你应该使用条件/布尔赋值。

+0

我改变了它,网站告诉我这回: 糟糕,再试一次。小心:你的第二个'for'循环应该在到达字符串+ myName.length中的当前点时停止。 – maxgee

0

试试这个

for(var j = i; j < (myName.length + i); j++) { 
    hits.push(text[j]); 
} 
-1

我也在努力,最后我明白了Codecademy的意思:“..它的当前点在字符串+ myName.length“ 只需要添加myName.length。

var text = "Aoday I woke up beside the loveliest girl on planet Earth"; 
var myName = "Aleksei"; 
var hits = []; 
for(i=0; i < text.length; i++){ 
    if(text[0] === myName[0]){ 
     for(var j = i; j <= myName.length; j++){ 
      hits.push(text[j] + myName.length); 
      } 
     } 
    } 

顺便说一句,text和myName的内容应该同时开始两个字母。希望我是对的,并希望它有帮助!