首页 > 解决方案 > 克隆一个 4D 多维数组

问题描述

我知道这个问题之前已经被问过,但所有的答案都假设数组是一个二维数组并且只有一层深度。

我有一个 4D 数组,在这里尝试了一些解决方案,但没有得到结果。这是我的数组:

阵列图像

我从这个问题中尝试了这个答案,但这只会深入一层。如何使它与 4D 数组一起使用?

var newArray = [];
for (var i = 0; i < currentArray.length; i++)
newArray[i] = currentArray[i].slice();

标签: javascriptarraysclone

解决方案


您可以使用一个简单的递归函数,在递归处理其值后用副本替换数组:

function deepCopy(value) {
    if (Array.isArray(value)) {
        return value.map(deepCopy);
    }
    return value;
}

const data = [[[0]]];
const copy = deepCopy(data);
data[0][0][0] = 123;
console.log(data);
console.log(copy);

实际上,查看该问题的底部答案,已经存在(更复杂的)深层复制功能,例如这个。当然,如果您想要一个非常简单的 only-deep-copies-arrays 版本,您仍然可以使用我的。


推荐阅读