JS中如何无逗号连接数组的数组?乘法表实现遇逗号问题求助
解决乘法表函数中数组拼接的逗号问题
嘿,我懂你现在卡在哪了——嵌套数组拼接成字符串时,内层元素之间的逗号怎么都消不掉,确实挺闹心的!咱们来一步步把这个问题解决掉~
问题根源
你当前的array里混着两种元素:偶数索引位置是装着分隔线的数组,奇数索引位置是存表格单元格的子数组。当你调用array.join(" ")时,那些子数组会自动触发toString()方法,而数组默认的toString()就是用逗号连接内部元素,这就是那些讨厌逗号的由来!
解决方案
核心思路很简单:先把每个内层数组转换成没有逗号的字符串,再放到外层数组里。这样外层数组执行join的时候,就只会处理纯字符串元素,不会再冒出逗号了。
修改你的代码只需要加一行关键操作,看下面的修改版:
var multiplicationTable = function(maxValue) { var array = []; var maxNum = maxValue ** 2; y = 1; var pad = ("+--" + "-".repeat(maxNum.toString().length - y.toString().length + 1)).repeat(maxValue) + "+\n"; for (var i = 0; i <= maxValue * 2; i++) { if (i % 2 != 0) { array[i] = []; for (var j = 0; j < maxValue; j++) { var n = ((j + 1) * (i + 1)) / 2; if (j + 1 == maxValue) { array[i].push("| " + n.toString() + " ".repeat((maxNum).toString().length - n.toString().length + 1) + "|\n"); } else { array[i].push("| " + n.toString() + " ".repeat((maxNum).toString().length - n.toString().length + 1)); } }; // 关键修改:把内层数组转成无逗号的字符串 array[i] = array[i].join(''); } else { array[i] = pad; // 这里直接存字符串就行,不用包数组,更简洁 } } return array.join(""); // 用空字符串连接,避免多余空格影响格式 }; console.log(multiplicationTable(5)); console.log(multiplicationTable(10));
额外优化小建议
- 把偶数行的
array[i] = [pad]改成array[i] = pad,没必要把分隔线放进数组里,直接存字符串更高效。 - 外层
join用""代替" ",避免分隔线和表格行之间出现多余空格,让乘法表格式更规整。 - 建议用
let/const替换var,避免变量提升带来的潜在问题,代码会更严谨。
这样改完之后,你再运行函数,那些烦人的逗号就彻底消失啦,乘法表的输出格式也会更符合预期~
内容的提问来源于stack exchange,提问作者Bardia Pourvakil
相关产品推荐
相关产品推荐

