首页 > 解决方案 > 无法使用for循环将二维数组的元素复制到另一个数组中

问题描述

这段代码有什么问题?

let matrix1 = [
        [2, 7, 9, 2],
        [8, 0, 7, 1],
        [8, 8, 0, 8]
    ];
    
let arr = []; // or arr = [[]];
    
for (let i = 0; i < matrix1.length; i++) {
        for (let j = 0; j < matrix1[i].length; j++) {
            arr[i][j] = matrix1[i][j];
        }
    }
    
console.log(arr);

错误是:

无法设置未定义的属性“0”这是当我尝试将元素的值分配给matrix1新数组时。 for loop适用于一维数组。

标签: javascriptmultidimensional-array

解决方案


尝试这个

   let matrix1 = [
    [2, 7, 9, 2],
    [8, 0, 7, 1],
    [8, 8, 0, 8]
];

let arr = []; // or arr = [[]];

for (let i = 0; i < matrix1.length; i++) {
    for (let j = 0; j < matrix1[i].length; j++) {
        if(!arr[i]) 
            arr[i] = []
        arr[i][j] = matrix1[i][j];
    }
}

如果你想复制一个没有 for 循环的二维数组,试试这个:

   let matrix1 = [
    [2, 7, 9, 2],
    [8, 0, 7, 1],
    [8, 8, 0, 8]
];
let arr = JSON.parse(JSON.stringify(matrix1))


推荐阅读