JavaScript二维数组拼接函数问题求助及解决方法
问题:JavaScript矩阵拼接函数实现错误排查
我是JavaScript新手,需要帮助找到函数正确实现方案:
我的代码如下:
function concatenateMatrix(matrix) { } var stringMatrix = [ ['H', 'e', 'l', 'l', 'o'], [' ', 'J', 'a', 'v', 'a'], ['W', 'o', 'r', 'l', 'd', '!'] ]; var matrix = ''; newArray = []; for (var i = 0; i < stringMatrix.length; i++) { for (var j = 0; j < stringMatrix[i].length; j++); newArray.push(stringMatrix); stringMatrix = ''; } console.log(concatenateMatrix(stringMatrix))
预期输出为Hello , Java World!,请问我的代码哪里出错了?非常感谢。
你的代码问题拆解
咱们一步一步捋下问题出在哪:
- 你定义了
concatenateMatrix函数但完全没写实现逻辑,最后却调用它,这肯定出不来结果呀。 - 外层循环里的内层循环后面多了个分号
;,这相当于内层循环是空的,根本没执行任何字符处理操作。 - 你把整个原数组
stringMatrix直接push进newArray,而不是把每一行的字符拼接成字符串,之后还把stringMatrix直接赋值为空字符串,原数据都被你清空了。 - 最后调用函数时传入的是已经被清空的
stringMatrix,参数本身就是错的。
你自己的可行解决方案(已解决)
你后来给出的实现逻辑是没问题的,整理成完整可运行的函数版本是这样:
function concatenateMatrix(matrix) { for (var x in matrix) { if (matrix[x] instanceof Array) { matrix[x] = matrix[x].join(""); } } return matrix.join(""); } var stringMatrix = [ ['H', 'e', 'l', 'l', 'o'], [' ', 'J', 'a', 'v', 'a'], ['W', 'o', 'r', 'l', 'd', '!'] ]; console.log(concatenateMatrix(stringMatrix)); // 输出:Hello , Java World!
其实还可以用更简洁的写法,用map方法一步到位:
function concatenateMatrix(matrix) { return matrix.map(row => row.join('')).join(''); }
这个写法先把每一行数组拼接成单个字符串,再把所有行的字符串拼接起来,逻辑更清晰,也更符合现代JavaScript的写法习惯。
内容的提问来源于stack exchange,提问作者TR54296
相关产品推荐
相关产品推荐

