我的github
在 JavaScript 里,实现二维数组的硬拷贝(深拷贝)可以采用下面几种方法:

1. 利用嵌套循环

逐个遍历数组的每个元素,然后复制到新数组。
function deepCopyArray(arr) {
  const newArray = [];
  for (let i = 0; i < arr.length; i++) {
    newArray[i] = [];
    for (let j = 0; j < arr[i].length; j++) {
      newArray[i][j] = arr[i][j];
    }
  }
  return newArray;
}

2. 使用map方法

借助高阶函数让代码更简洁。
function deepCopyArray(arr) {
  return arr.map(row => [...row]);
}

3. 运用 JSON 方法(仅适用于简单数据)

这种方式简单直接,但有局限性,像函数、Date对象等特殊对象无法正确处理。
function deepCopyArray(arr) {
  return JSON.parse(JSON.stringify(arr));
}

示例

下面通过一个例子来验证深拷贝的效果:
const original = [
  [1, 2],
  [3, 4]
];

const copy = deepCopyArray(original);

// 修改拷贝数组中的元素
copy[0][0] = 99;

console.log(original); // 输出: [[1, 2], [3, 4]]
console.log(copy);     // 输出: [[99, 2], [3, 4]]

注意要点

  • 前两种方法可以处理包含特殊对象(如函数)的数组。
  • 若数组元素是自定义对象,建议使用lodash库的cloneDeep方法,以保证完全深拷贝。
import { cloneDeep } from 'lodash';

const copy = cloneDeep(original);
参考:豆包AI
posted on 2025-06-16 10:06  XiaoNiuFeiTian  阅读(39)  评论(0)    收藏  举报