如何在JavaScript中填充二维矩阵(多维数组)?
如何用指定数组填充二维全零矩阵
你的代码存在几个核心问题:
createMatrix内部循环时反复调用populateMatrix,逻辑完全混乱;而且populateMatrix里试图对createMatrix函数执行push操作,这是错误的——createMatrix是函数,不是数组,不能调用数组的push方法。- 完全缺失矩阵与
populateArr的关联逻辑,没有遍历两者完成替换操作。
修正后的实现方案
方案一:先创建全零矩阵,再填充数据
先写一个干净的全零矩阵生成函数,再单独实现填充逻辑:
// 生成指定行列的全零二维矩阵 function createMatrix(rows, cols) { const arr = []; for (let rowIndex = 0; rowIndex < rows; rowIndex++) { // 直接用fill创建指定长度的全零数组,比循环push更简洁 const column = new Array(cols).fill(0); arr.push(column); } return arr; } // 用指定数组填充矩阵 function populateMatrix(matrix, populateArr) { let currentIndex = 0; // 遍历矩阵的每一行 for (let i = 0; i < matrix.length; i++) { // 遍历当前行的每个元素 for (let j = 0; j < matrix[i].length; j++) { matrix[i][j] = populateArr[currentIndex]; currentIndex++; } } return matrix; } // 调用示例 const populateArr = [1, 4, 6, 9, 25, 43, 12, 8, 3, 10, 56, 72, 23, 14, 66]; // 目标矩阵是5行3列,所以传入rows=5,cols=3 const zeroMatrix = createMatrix(5, 3); const finalMatrix = populateMatrix(zeroMatrix, populateArr); console.log(finalMatrix);
方案二:一步到位创建并填充矩阵
如果不需要单独保留全零矩阵,可以直接在创建时填充数据,更高效:
function createAndPopulateMatrix(rows, cols, populateArr) { const matrix = []; let currentIndex = 0; for (let i = 0; i < rows; i++) { const row = []; for (let j = 0; j < cols; j++) { row.push(populateArr[currentIndex]); currentIndex++; } matrix.push(row); } return matrix; } // 调用示例 const populateArr = [1, 4, 6, 9, 25, 43, 12, 8, 3, 10, 56, 72, 23, 14, 66]; const finalMatrix = createAndPopulateMatrix(5, 3, populateArr); console.log(finalMatrix);
注意事项
- 确保
populateArr的长度等于rows * cols,否则超出部分会填充undefined,你的数组长度15刚好匹配5*3=15,没问题。
内容的提问来源于stack exchange,提问作者Daniel Hakobyan
相关产品推荐
相关产品推荐

