2011-12-09 17 views
0

我試圖將字符串轉換爲單詞,然後使用javascript和html5畫布打印這些字符串。該字符串可以是任意長度,但我使用50作爲單詞的最大值(由空格分隔)。現在,我有以下創建數組:打印Javascript split()數組並將未定義的值轉換爲字符串

,然後使用打印:

 ctx.fillText(wordArray[0] + " " + wordArray[1] + " " + wordArray[2] + " " + wordArray[3] + " " + wordArray[4], leftOffset, txtHeight); 
     ctx.fillText(wordArray[5] + " " + wordArray[6] + " " + wordArray[7] + " " + wordArray[8] + " " + wordArray[9], leftOffset, txtHeight+20); 

然而,當文本打印,任何未定義值打印爲「未定義「 代替 」 。」看來我正在以錯誤的方式檢查未定義的值,但我不確定還有什麼要嘗試。

此外,如果任何人有任何更好的建議如何實現此目標(將字符串轉換爲單詞,然後一次打印5個單詞)。請隨時提出一些更好的選擇。

謝謝

回答

1

在.split()返回的數組中不會有任何未定義的值。你得到的是未定義的,因爲你的打印代碼的硬編碼索引比數組中的最高索引高。

對不起,我沒有時間,現在來測試,或解釋超越提的是.slice()創建新的數組提取源陣列的範圍,.join()是(顯然)的.split()相反,但也許你可以嘗試這樣的事情:

var wordArray = kstring.split(" ", 50), 
    i, h, l 
    wordsPerLine = 5, 
    lineHeight = 20; 

for (i=0, h=0, l=wordArray.length; i < l; i+=wordsPerLine, h+=lineHeight) { 
    ctx.fillText(wordArray.slice(i, Math.min(l, i+wordsPerLine)).join(" "), 
       leftOffset, txtHeight + h); 
} 
相關問題