我正在運行以下代碼以獲取顯示單詞Eric字母的相關輸出。Javascript for loop&arrays
/*jshint multistr:true */
text = "My name is Eric. Eric lives in New York";
var myName = "Eric";
var hits = [];
for (var i=0; i < text.length; i++) {
if (text[i] == "E") {
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);
}
我能夠獲得所期望的輸出,該輸出[ 'E', 'R', 'I', 'C', 'E', 'R', 'I', 'c' 的]
然而,當我在我的代碼行8進入「L」我得到以下輸出: [ 'L', '我', 'v', 'E', 'S' ,'','我']
根據我的理解,代碼應該會返回一條消息您的名字沒有被發現!。
相反,它仍在處理字母l之後的字符,並將其作爲輸出返回。
如何以更好的方式優化我的代碼以確保只搜索字符串Eric中的字符並將其作爲輸出返回,而其他字符將被拒絕?
爲什麼應該說這個名字是不是發現了什麼?你的代碼中沒有什麼比較'myName'和文本。它所做的就是使用'myName.length'作爲'for'循環的限制的一部分,但它對'myName'中的字符沒有任何作用。 – Barmar
爲什麼不使用'text.indexOf(myName)'如果你想知道名稱是否在文本中找到? – Barmar
我測試了你的代碼,它不像你說的那樣。 – NPE