This question already has answers here:
Copy array by value
                                
                                    (35个答案)
                                
                        
                2年前关闭。
            
        

有什么办法可以使变量深拷贝? (不是对象)。例:

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

b.splice(1, 1);

b = a;


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

我知道=只是创建了一个新引用,因此出现了一个问题:是否还有其他方法可以使深层副本代替引用?

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

最佳答案

您是否测试过代码? Numbers和其他原语被复制,未引用。



var a = 1;
var b = a;
console.log(`a is ${a}`);
console.log(`b is ${b}`);
b++;
console.log(`a is ${a} (no change)`);
console.log(`b is ${b}`);





用另一个示例进行编辑后:



var a = ["foo", "bar"];
var b = a.slice(); // array copy
console.log(`a is ${a}`);
console.log(`b is ${b}`);
b.splice(1, 1);
console.log(`a is ${a} (not changed)`);
console.log(`b is ${b}`);
b = a;

关于javascript - JS制作数组的深拷贝,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49235387/

10-11 23:45