Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 修改克隆数组的值时如何保留嵌套数组值?_Javascript_Arrays - Fatal编程技术网

Javascript 修改克隆数组的值时如何保留嵌套数组值?

Javascript 修改克隆数组的值时如何保留嵌套数组值?,javascript,arrays,Javascript,Arrays,我有一个名为default\u array的默认嵌套数组,非常简单: default_array = [ ["a", "b", "c"] ]; 我创建了一个名为obj的obj,其中他的array属性的值是default\u array的副本: obj = { "array" : default_array.slice(0) }; 但当我修改obj.array的元素时,如下所示: obj.array[0][0] = "z"; 这也会修改默认的\u数组。我希望此修改

我有一个名为
default\u array
的默认嵌套数组,非常简单:

default_array = [
        ["a", "b", "c"] 
];
我创建了一个名为
obj
的obj,其中他的
array
属性的值是
default\u array
的副本:

obj = {

    "array" : default_array.slice(0)
};
但当我修改
obj.array
的元素时,如下所示:

obj.array[0][0] = "z";
这也会修改
默认的\u数组
。我希望此修改不会影响
默认数组
。我想保留
默认数组


有什么想法吗?

尝试使用
map
或者您可以使用
JSON.parse
&
JSON.stringify
的组合,因为您有一个嵌套/多维数组:

default_array = [
    ["a", "b", "c"]
];
var newArray = default_array.map(function(arr) {
    return arr.slice();
});
//Or you can use combination of JSON.parse & Stringify
var newArray = JSON.parse(JSON.stringify(default_array));
obj = {
    "array": newArray.slice(0)
};
函数副本(数组){
var结果=[];
对于(变量i=0,len=array.length;ilog(默认的_数组) 对于您的问题,这可能是多余的,但是如果您越来越多地使用它,请考虑使用不可变的.js

它提供高效的不可变数据类型。。。。只需查看使用库的示例代码。

您可以尝试以下方法:

obj = {
    "array" : JSON.parse(JSON.stringify(default_array))
};

Try
var copy=default_array.map(函数(e){returne;})然后使用
复制
。IE8不支持映射。使用。这一点值得商榷,IE8不支持IE8map。不带.map()和不带jquery是可能的?您可以结合使用
JSON.parse
JSON.stringify
请参阅editNit:如果
default\u数组的所有元素都不是数组,这将不起作用。扩展版本适用于父数组中的情况,而不仅仅是数组