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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 16:03:16