TypeScript:如何用同尺寸二维数组替换另一二维数组的所有元素
二维数组元素替换方案(不转一维)
需求说明
给定两个尺寸完全相同的TypeScript二维数组,需将firstArray的所有元素替换为secondArray对应位置的元素,最终结果如下:
原数组:
var firstArray = [ ['-', '-', '-'], ['-', 'X', '-'], ['-', '-', 'O'] ] var secondArray = [ ['-', '-', '-'], ['-', 'X', '-'], ['-', '-', '-'] ]
替换后firstArray应变为:
firstArray = [ ['-', '-', '-'], ['-', 'X', '-'], ['-', '-', '-'] ]
以下是无需将二维数组转为一维的实现方案:
方法1:逐元素遍历替换(保留原数组引用)
通过嵌套遍历,逐个修改firstArray对应位置的元素值,完全保留原数组及子数组的引用:
// 遍历每一行 firstArray.forEach((row, rowIndex) => { // 遍历当前行的每个元素 for (let colIndex = 0; colIndex < row.length; colIndex++) { firstArray[rowIndex][colIndex] = secondArray[rowIndex][colIndex]; } });
或者用更简洁的嵌套forEach:
firstArray.forEach((_, rowIndex) => { secondArray[rowIndex].forEach((val, colIndex) => { firstArray[rowIndex][colIndex] = val; }); });
方法2:直接替换子数组(修改子数组引用)
如果不需要保留firstArray中原子数组的引用,可以直接替换整行,代码更简洁:
for (let i = 0; i < firstArray.length; i++) { firstArray[i] = secondArray[i]; }
两种方法的区别
- 方法1:仅修改元素值,原数组和所有子数组的引用保持不变,适合需要保留原有数组结构引用的场景。
- 方法2:替换子数组的引用,原有的子数组会被丢弃(后续由垃圾回收处理),执行效率更高,适合无需保留原数组子引用的场景。
内容的提问来源于stack exchange,提问作者alex
相关产品推荐
相关产品推荐

