JavaScript按值复制数组

JavaScript按值复制数组,javascript,arrays,json,copy,Javascript,Arrays,Json,Copy,我已经创建了一个数组,并从一个php文件接收了另一个数组。 数据很好,但当我尝试将一个数组复制到另一个数组时,似乎当我更改arr1时,arr2也会更改 它是“通过引用”而不是我需要的“通过值”复制的 我还尝试了slice(),但它不起作用,变量根本不会被复制,甚至不会以那种方式“通过引用”复制 // arr1[0] = "Hey";//this array is coming from another file and the data is fine var arr2 = []; arr2[

我已经创建了一个数组,并从一个php文件接收了另一个数组。 数据很好,但当我尝试将一个数组复制到另一个数组时,似乎当我更改arr1时,arr2也会更改

它是“通过引用”而不是我需要的“通过值”复制的

我还尝试了slice(),但它不起作用,变量根本不会被复制,甚至不会以那种方式“通过引用”复制

// arr1[0] = "Hey";//this array is coming from another file and the data is fine
var arr2 = [];

arr2[0] = arr1[0];
arr2[0] += "1"; // right now arr1 and arr2 both has "Hey1" in them.
有什么想法吗?
谢谢

您可以对字符串数组进行深层而非浅层复制,如下所示:

var arr2 = [], i = 0;
for (i = 0; i < arr1.length; i++) {
    arr2[i] = String(arr1[i]);
}
var arr2=[],i=0;
对于(i=0;i

编辑:oops,交换了深度和浅层。

数组是Javascript中的对象。您可能知道,对象是通过引用复制的。您可以在此处查看:

您确定这两个数组中都有“Hey1”吗?对我来说不行:对我来说也很好。如果您使用了
arr2=arr1
,而不是您显示的代码,则会出现这种情况。我认为您的示例没有充分反映您的实际程序。您是否碰巧在这里用字符串替换了实际程序中的对象?因为你展示的不是Javascript的工作原理:他没有在任何地方复制数组。