Codecademy JavaScript Push()练习

时间:2013-10-12 19:22:54

标签: javascript arrays

CodeAcademy的目标尚不明确。 http://bit.ly/167N8bX 我想我应该通过一个长字符串,并将我的名字中的字符从字符串中推入一个数组。

以下是它的说法:

  

“它会检查你的第一个字母的文字   name,然后按(添加)等于你名字的字符数   长度到数组。通过检查阵列,您将能够看到是否   你的名字被提到了!“

*更新。现在我看到了教师的输出,它实际上并没有检查你的名字是否被提及。困扰新手的指示,比如我。

我在第5步:链接:http://bit.ly/167N8bX

var text = "Lorem ipsum dolor nayr sit amet, consectetur adipisicing elit, sed do eiusmod tempor yan ut Ryan labore et dolore magna aliqua. Ut enim ad ry minim veniam, quis nostrud ryan exercitation ullamco ryan laboris nisi ut aliquip ex ea ry commodo rya consequat. END";
var myName = "Ryan";
var hits = [];

for(var i = 0; i < text.length; i++) {
    // Loop thru "text" string
    // check each char one-by-one
    // if it finds uppercase "R"
    if(text[i] == "r".toUpperCase()){

    // push the next 3 chars into hits[] array...
    // by looping on myName.length
    // end push() when myName.length loops ends
       for(var j = 0; j < myName.length; j++){
           hits.push(text[i]);
           console.log(hits);
       }
    }
}

*更新 如何保持输出不发生每个循环,并将每个推送存储在数组中,直到它完成所有循环?

上述代码的错误输出:

[ 'R' ]
[ 'R', 'y' ]
[ 'R', 'y', 'a' ]
[ 'R', 'y', 'a', 'n' ]

3 个答案:

答案 0 :(得分:1)

我认为问题在于,在你的内循环中,你每次都只是推着同一个字母。您需要将其修改为以下内容:

hit.push(text[i + j])

那应该解决问题。祝你继续编码好运!

答案 1 :(得分:1)

刚看到代码学院的练习。您的代码没有任何问题,除非您将text[i]而不是text[i+j]推送到匹配数组中。

实际上代码学院希望你能根据他们的提示编写代码。

在他们的提示中,您将能够看到Your loop should stop when it hits the value of the first iterator (say, i) plus the length of your myName variable.

你的代码

var text = "Lorem ipsum dolor nayr sit amet, consectetur adipisicing elit, sed do eiusmod tempor yan ut Ryan labore et dolore magna aliqua. Ut enim ad ry minim veniam, quis nostrud ryan exercitation ullamco ryan laboris nisi ut aliquip ex ea ry commodo rya consequat. END";
var myName = "Ryan";
var hits = []; // empty array to 'push()' my name into
for(var i = 0; i < text.length; i++ ){
    if(text[i] == myName[0]){ 
        for(var j = 0; j < myName.length; j++){ 
            hits.push(text[j+i]);
        }
    }        
}

如果您使用以下代码替换代码,他们会说好吗

var text = "Lorem ipsum dolor nayr sit amet, consectetur adipisicing elit, sed do eiusmod tempor yan ut Ryan labore et dolore magna aliqua. Ut enim ad ry minim veniam, quis nostrud ryan exercitation ullamco ryan laboris nisi ut aliquip ex ea ry commodo rya consequat. END";
var myName = "Ryan";
var hits = []; // empty array to 'push()' my name into
for(var i = 0; i < text.length; i++ ){
    if(text[i] == myName[0]){ 
        for(var j = -1; j < myName.length+1; j++){ 
            hits.push(text[j+i+1]);
        }
    }        
}

答案 2 :(得分:0)

我现在明白了。教师的代码并没有真正检查我的名字的字符串(“Ryan”)。他的代码不使用MyName数组的第一个字母。他手动输入“E”(“Eric”是他的例子)。他的代码发现手动输入“E”,然后在“E”之后推送接下来的3个字符(他们不必使用myName.length将“ric”匹配到hits []数组中。