【问题标题】:CodeAcademy: JavaScript Second "For" Loop in Text searchCodecademy:文本搜索中的 JavaScript 第二个“For”循环
【发布时间】:2017-05-30 01:01:21
【问题描述】:

所以,这是关于进行文本搜索。我被告知从 3 个 var 开始:text、myNames 和 hits。我应该把我放在“文本”中的名字推到“点击”。

我理解第一个 for 循环,它是通过文本搜索:

for ( i = 0 ; i <= text.length ; i++ ) {
    if(text[i] === "S"); 
}

但是,我真的不明白这条指令,“所以如果你的名字有 11 个字母长,那么如果你的循环在文本中看到 myName 的第一个字母,它就应该在点击中添加 11 个字符。”

所以我检查了提示,这让我更加困惑,它说:“当它达到第一个迭代器的值(比如 i)加上你的 myName 变量的长度时,你的循环应该停止。”

什么?我试着按照提示进行操作,这似乎是真的,因为它让我可以继续下一课。但是控制台只记录了“S”

var text ="A string containing some text. \ I place my name here, Smit, \ a couple of times, so \ I need at least one more, \ Smit is it enough? \ Or we need more? \ Smit Smit Smit!"; 

var myName = "Smit";

var hits = [];

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

enter image description here

但我不明白为什么我需要使用“(text.length + myName.length)”?

【问题讨论】:

    标签: javascript loops for-loop search


    【解决方案1】:

    我认为你误解了指令。

    指令“因此,如果您的姓名长度为 11 个字母,那么如果您的循环在文本中看到 myName 的第一个字母,则应在点击中添加 11 个字符”表示以下代码。

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

    您应该使用i + myName.length 而不是text.length + myName.length。如果myName 的第一个字符位于i-th 位置,那么myName 的最后一个字符将位于(i + myName.length - 1)-th 位置。你可以写几个字符串自己检查一下。

    看来codecademy的检查不是很严格,所以即使允许你进入下一节也不代表你的代码100%正确。

    但我不太明白为什么指令说“如果它在文本中看到 myName 的第一个字母,则在命中添加 11 个字符”。我们不应该检查整个名称然后决定将其推送到hit吗?

    【讨论】:

    • 是的,它只记录了“S”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多