打印Javascript split()数组并将未定义的值转换为字符串

打印Javascript split()数组并将未定义的值转换为字符串,javascript,html,canvas,split,html5-canvas,Javascript,Html,Canvas,Split,Html5 Canvas,我正在尝试将字符串转换为单词,然后使用javascript和html5画布打印它们。字符串可以是任意长度,但我使用50作为单词的最大值(用空格分隔)。现在,我有以下步骤来创建阵列: var wordArray = kstring.split(" ", 50); for(var k = 0; k < wordArray.length; k++) { if(typeof wordArray[k] == 'undefined') wordArray[k] = " .";

我正在尝试将字符串转换为单词,然后使用javascript和html5画布打印它们。字符串可以是任意长度,但我使用50作为单词的最大值(用空格分隔)。现在,我有以下步骤来创建阵列:

var wordArray = kstring.split(" ", 50);

for(var k = 0; k < wordArray.length; k++)
{
    if(typeof wordArray[k] == 'undefined')
        wordArray[k] = " .";
}
等等

但是,当文本打印时,任何未定义的值都将打印为“未定义”而不是“.”。似乎我正在以错误的方式检查未定义的值,但我不确定还需要尝试什么

此外,如果有人对如何实现这一目标有更好的建议(将字符串转换为单词,然后一次打印5个单词)。请随意提出一些更好的选择


谢谢。

在.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);
}
var wordArray=kstring.split(“,50),
i、 h,l
wordsPerLine=5,
线宽=20;
对于(i=0,h=0,l=wordArray.length;i
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);
}