此代碼:轉換數組串
var text = "filler text filler text Michael filler text Michael";
var myName = 'Michael';
var hits = [];
for (var i = 0; i < text.length; i++){
if (text[i] === "M"){
for (var j = i; j < (i + myName.length); j++){
hits.push(text[j]);
myName.toString();
}
}
}
if (hits === 0){
console.log("Your name wasn't found!");
}
else {
console.log(hits);
}
打印出[ 「M」 「I」 「C」 「H」 「一個」 「e」 的 「L」] 如何獲取它打印「邁克爾」? 謝謝
'myName.toString();'在語句本身不會做任何事情。你期望它做什麼?這個代碼一般應該完成什麼?如果您嘗試匹配模式,請使用正則表達式。如果您嘗試檢查子字符串,請使用'indexOf'。 – Ryan
您的代碼僅搜索字母「M」,然後將下一個(myName.length - 1)(本例中爲6)字母放入'hits'中。看看[indexOf()函數](http://www.w3schools.com/jsref/jsref_indexOf.asp),它可以搜索整個字符串。然後,您的代碼在「M」(i,c,h,e,a,l)之後搜索每個字符的「M」,這有點低效,可能會導致錯誤(如果「M」更接近'text'的結尾比'myName'的長度),另一個使用'indexOf()'的原因。 – Trojan
此搜索算法不保證只匹配邁克爾。它將匹配任何長度爲7的字符串 - 以M開頭 – TGH