所以,这是关于进行文本搜索。我被告知从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");}
}
}
但我不明白为什么我需要使用“(text.length + myName.length)”?
答案 0 :(得分:0)
我认为你误解了这条指令。
指令“所以如果你的名字长11个字母,你的循环应该在点击时添加11个字符,如果它在文本中看到myName的第一个字母”意味着以下代码。
for (j = i; j < (i + myName.length); j++)
您应该使用i + myName.length
代替text.length + myName.length
。如果myName
的第一个字符位于i
个位置,则myName
的最终字符将位于(i + myName.length - 1)
个位置。你可以写几个字符串并自己检查。
似乎codecademy的检查不是很严格,所以它并不意味着你的代码100%正确,即使它允许你移动到下一部分。
但是我不太明白为什么指令说“如果它在文本中看到myName的第一个字母,就会添加11个字符”。我们不应该检查整个名称,然后决定将其推入hit
或不是吗?