Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.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 JS对数组进行深度复制_Javascript_Arrays_Deep Copy - Fatal编程技术网

Javascript JS对数组进行深度复制

Javascript JS对数组进行深度复制,javascript,arrays,deep-copy,Javascript,Arrays,Deep Copy,有什么方法可以制作一个变量的深度副本吗?(不是反对)。例如: var a = ["String", "string"]; var b = a; b.splice(1, 1); b = a; 在我的示例中,a不应该更改,我希望稍后使用它来恢复b。(如上面代码所示) 我知道,=只是做了一个新的引用,因此问题是:有没有其他方法可以做一个深度复制而不是引用 需要注意的是,我不能使用任何库,我找到了建议使用jQuery之类的答案,但我不能使用它。您测试过代码吗数字和其他原语是复制的,而不是引用的

有什么方法可以制作一个变量的深度副本吗?(不是反对)。例如:

var a = ["String", "string"];
var b = a;

b.splice(1, 1);

b = a;
在我的示例中,
a
不应该更改,我希望稍后使用它来恢复
b
。(如上面代码所示)

我知道,
=
只是做了一个新的引用,因此问题是:有没有其他方法可以做一个深度复制而不是引用


需要注意的是,我不能使用任何库,我找到了建议使用jQuery之类的答案,但我不能使用它。

您测试过代码吗<代码>数字和其他原语是复制的,而不是引用的

var a=1;
var b=a;
log(`a是${a}`);
log(`b是${b}`);
b++;
log(`a是${a}(无更改)`);

log(`b是${b}`)您测试过代码吗<代码>数字
和其他原语是复制的,而不是引用的

var a=1;
var b=a;
log(`a是${a}`);
log(`b是${b}`);
b++;
log(`a是${a}(无更改)`);

log(`b是${b}`)这是我的一个糟糕的、非常糟糕的例子,在我的例子中,我处理的是字符串数组tested@Chaost数组不是基元而是对象。@字符串数组(字符串数组?)只是一个对象,所以请参阅深度复制数组。@AurelBílýoh没有注意到
var b=a按此行尝试:var b=Object.assign([],a);这是我的一个糟糕的、非常糟糕的例子,在我的例子中,我处理的是字符串数组tested@Chaost数组不是基元而是对象。@字符串数组(字符串数组?)只是一个对象,所以请参阅深度复制数组。@AurelBílýoh没有注意到
var b=a按此行尝试:var b=Object.assign([],a);只有javascript中的对象(数组也是对象)才能相互引用。所有其他变量类型都是新变量。@RickardElimää抱歉,这个示例非常糟糕,现在已经修复了它只有javascript中的对象(数组也是对象)可以相互引用。所有其他变量类型都是新变量。@RickardElimää抱歉,该示例非常糟糕,现已修复