条件表达式中的赋值

时间:2013-12-15 06:34:52

标签: javascript for-loop compiler-errors

我正在尝试在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");
        }
    }
}

4 个答案:

答案 0 :(得分:2)

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

你正在使用一个你应该使用条件/布尔值的赋值。

答案 1 :(得分:2)

=是赋值,但在条件语句中,您需要检查是否相等(==),检查某些内容是否更大(>),检查某些内容是否更少({{{ 1}})等。您要为变量<分配j的长度,而不是检查此行的某些条件:

myName

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

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

但是,这可能不一定是您的Codecademy Assignment的解决方案,但它将解决您的特定JavaScript错误。和for(var j = i;j <= myName.length;){ <>和其他提及here的条件一起阅读并阅读,以试图找出有效的方法。

修改:如果您想要解决整个问题,那么在问题中发布问题的链接会有所帮助,而不仅仅是提到您遇到的具体错误,而是解释整个问题。话虽这么说,你错过了一些事情:

  1. 你正在做作业,而不是像我上面解释的那样检查条件。
  2. 您忘记在==循环中增加j,就像富兰克林在评论中提到的那样。您需要for
  3. 您没有停在字符串中的正确位置。正如Codecademy所说,“......当你的第二个j++循环到达字符串+ for中的当前点时,它应该停止。”这意味着您需要停在myName.length而不是text.length + myName.length。这也意味着您应该使用myName.length而非<,如上所述。
  4. 将所有这些放在一起,解决方案就是把这一行:

    <=

    取代这一行:

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

答案 2 :(得分:0)

试试这个

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

答案 3 :(得分:-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的内容应该从同一个字母开始。希望我是对的,希望它有所帮助!