在JavaScript中复制任意n维数组?

Ogn*_*jen 1 javascript arrays deep-copy

我基本上寻找一个通用函数副本(数组),它将返回相同的n维数组,而不会引用前一个数组.

Pau*_*aul 5

这适用于数组,它不适用于嵌套对象(不是数组):

function copy(arr){
    var new_arr = arr.slice(0);
    for(var i = new_arr.length; i--;)
        if(new_arr[i] instanceof Array)
            new_arr[i] = copy(new_arr[i]);
    return new_arr;
}
Run Code Online (Sandbox Code Playgroud)

像这样使用它:

var arr = [
   [[1,2,3],[75]], 100,
   [[[1]]], [],
   [1,[2,[3],4],5], 6, 7, 8
];

var new_arr = copy(arr);
Run Code Online (Sandbox Code Playgroud)