You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 06:14:55