如何在JavaScript中创建二维数组的空副本?
如何创建与原二维数组结构一致的空副本
你需要生成一个和原二维数组子数组长度完全匹配,但所有元素为空的新数组,以下是几种简单可行的实现方式:
方法一:使用map快速生成
利用数组的map方法遍历原数组的每一行,结合Array.from或new Array创建对应长度的空数组:
const originalArray = [ [1, 2, 3, 4, 5, 6, 7], [8, 9, 10, 11, 12, 13, 14], [15, 16, 17, 18, 19, 20, 21], [22, 23, 24, 25, 26, 27, 28], [29, 30, 31] ]; // 方式1:Array.from 生成对应长度的空数组 const copiedArray1 = originalArray.map(row => Array.from({ length: row.length })); // 方式2:new Array 直接指定长度 const copiedArray2 = originalArray.map(row => new Array(row.length));
这两种方式都会生成结构完全符合预期的数组,每个子数组的长度和原数组对应行一致,元素默认是undefined,在控制台输出时会显示为空槽,和你给出的示例效果一致。
方法二:嵌套循环实现(修正版)
如果你想用嵌套循环,不需要遍历子数组的元素,只需要根据原数组每行的长度创建空数组即可:
const copiedArray3 = []; for (let i = 0; i < originalArray.length; i++) { const newRow = []; // 直接设置子数组长度,快速生成对应空槽 newRow.length = originalArray[i].length; copiedArray3.push(newRow); }
之前嵌套循环失败可能是因为错误地尝试复制原数组的元素,或者没有正确设置子数组的长度,以上写法可以避免这个问题。
内容的提问来源于stack exchange,提问作者William
相关产品推荐
相关产品推荐

