2017-05-30 39 views
0

所以,這是關於進行文本搜索。我被告知從3 var:text,myNames和點擊開始。我本來應該把我的名字放在'文本'中,放在'點擊'中。CodeAcademy:JavaScript第二個「For」循環文本搜索

我理解第一個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)」?

回答

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%正確的,即使它可以讓你移動到下一個部分。

但我不明白爲什麼說明書上說「增加11個字符命中,如果它曾經看到MYNAME的第一個字母的文字」。我們不應該檢查整個名稱,然後決定將它推入hit或不?

+0

是的,它只記錄了「S」 –

相關問題