javascript - 无法使用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
适用于一维数组。
解决方案
尝试这个
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))
推荐阅读
- java - 带有自定义表的 Spring Config Server JDBC 后端
- android - MPAndroidChart:对条形图使用模式填充
- c# - 如何对 ICommands 进行分组,以便如果一个正在执行其他命令则不能?
- apache-calcite - v1.18 中缺少 Schema.contentsHaveChangedSince
- typescript - 使用泛型和其余属性的打字稿功能不会自动收集所有可能的类型
- javascript - 在其焦点区域外单击时弹出框未关闭
- python - 缺失值时为所有可能的组自定义分组
- javascript - 浏览器实际上是如何将 DOM 数据存储在最低级别的?它是存储为表还是树?
- xmpp - Ejabberd - ejabberd_auth_external:failure:103 调用“check_password”时外部身份验证程序失败
- reactjs - 反应:
与数组