我正在构建一个JS新闻自动收录器,它以像素字母在画布上呈现字符串。当渲染字符串的可视长度(以像素为单位并在下面的函数中由全局变量&{39; calc_w
'表示)超过宽度时(由全局变量' {{1表示)在画布的下面的函数中,我需要将渲染字符串的后半部分放在下一行。我根据字符串中的空格数确定了在哪里打破字符串(下面用变量' w
')表示。
但是我无法弄清楚为什么我的小函数在控制台中返回undefined而不是spaces
变量的数字。
spc_indx[i]
记录' function ins_breaks(str) {
var spaces = 0;
var spc_indx = [];
if (calc_w > w) {
for (var i = 0; i < str.length; i++) {
if (str.charAt(i) == " ") {
spaces++;
spc_indx[i] = spaces; //Tells the switch where to cut the string.
}
}
switch (spaces) {
case 4:
//4 spaces = 5 words.
var line2 = str.substr(spc_indx[2]);
//str.replace(' ', '');
console.log(spc_indx[2])
break;
case 5:
console.log(spc_indx[2])
break;
}
}
}
&#39;产生了预期的数字,但是当我为spaces
数组的一部分分配空格时,它返回未定义。为什么spc_indx
数组未定义,而不是像我预期要回来的数字?
答案 0 :(得分:2)
spc_indx[i] = spaces;
应该是
spc_indx[spaces] = i;