在 JavaScript 里,实现二维数组的硬拷贝(深拷贝)可以采用下面几种方法:
逐个遍历数组的每个元素,然后复制到新数组。
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;
}
借助高阶函数让代码更简洁。
function deepCopyArray(arr) {
return arr.map(row => [...row]);
}
这种方式简单直接,但有局限性,像函数、Date对象等特殊对象无法正确处理。
function deepCopyArray(arr) {
return JSON.parse(JSON.stringify(arr));
}
下面通过一个例子来验证深拷贝的效果:
- 前两种方法可以处理包含特殊对象(如函数)的数组。
- 若数组元素是自定义对象,建议使用
lodash库的cloneDeep方法,以保证完全深拷贝。