2013-07-29 70 views
-1

此代碼:轉換數組串

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」] 如何獲取它打印「邁克爾」? 謝謝

+3

'myName.toString();'在語句本身不會做任何事情。你期望它做什麼?這個代碼一般應該完成什麼?如果您嘗試匹配模式,請使用正則表達式。如果您嘗試檢查子字符串,請使用'indexOf'。 – Ryan

+0

您的代碼僅搜索字母「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

+0

此搜索算法不保證只匹配邁克爾。它將匹配任何長度爲7的字符串 - 以M開頭 – TGH

回答

2

使用Array類的join方法。

console.log(hits.join("")); 
+0

用逗號加上。 – Ryan

+0

對不起。編輯。 – mohkhan

0

最快的是簡單地加入陣列: hits.join("")

0

你可以加入()函數,並確保指明要使用的分隔符。如果你想顯示它沒有任何分隔符,那麼只需使用「」作爲參數。

var name = hits.join(""); 
console.log(name);