我是編程新手,目前在CodeAcademy上學習javascript。下面的代碼來自一個教程,其中程序將搜索字符串以查找名稱。該程序將遍歷數組,將每個字母與名稱的第一個字母進行比較,如果它看到該字母: 它會將該字母及其後的所有字母推到數組中,當它的字母數推送等於你名字中的字母數量。使用string.length +計數器變量
我不明白的是行:for (var j = i; j < (myName.length + i); j++)
爲什麼j <(myName.length + i)
而不是j<(myName.length)
?如果「Eric」的字母「E」是字符串中的第25個字符,則不會是j<(myName.length + i) = j<("4" + "25")
這是錯誤的,因爲它的正確代碼應該是j<("4")
,其中4是名稱Eric的長度。
我試過用j<(myName.length)
來運行代碼,但它無法工作,我似乎無法理解爲什麼。
text = "Blah blah blah blah blah blah Eric \
blah blah blah Eric blah blah Eric blah blah \
blah blah blah blah blah Eric";
var myName = "Eric";
var hits = [];
// Look for "E" in the text
for(var i = 0; i < text.length; i++) {
if (text[i] == "E") {
// If we find it, add characters up to the length of my name to the array
for(var j = i; j < (myName.length + i); j++) {
hits.push(text[j]);
}
}
}
if (hits.length === 0) {
console.log("Your name wasn't found!");
} else {
console.log(hits);
}
我在這裏看到這段代碼:http://stackoverflow.com/questions/15996731/simple-beginner-search-program-using-arrays-in-javascript-issue-with-displaying它來自哪裏? –
假設你有一個字符串「哈哈埃迪哈哈哈埃裏克」,你的測試不會是錯的,因爲它發現「埃迪」之前的「埃迪」從「埃迪」發現「E」?有什麼理由不使用indexOf()方法? –
代碼如果來自CodeAcademy的JavaScript教程。鏈接是http://www.codecademy.com/courses/javascript-beginner-en-XEDZA/0/1?curriculum_id=506324b3a7dffd00020bf661而且,這個字符串會在Eric之前返回Eddy。它仍然是一個初學者教程,所以我還沒學會關於indexOf()但 –