按数值将数组传递到数组数组,而不是引用

时间:2015-08-31 11:02:14

标签: javascript arrays pass-by-value

我有一个坐标数组(coods),因此它们是较小的数组,我想添加新的数组。我希望它看起来像这样:

[
[0,2],
[0,1],
[0,0]
]

我希望每次代码运行时都向其中添加一个不断变化的变量new

coods.unshift(new);

唯一的问题是(因为我永远要发现),当将一个新数组传递给更大的数组时,它只传递一个引用,而不是值本身,所以我最终得到一个coods数组的:

[
[0,2],
[0,2],
[0,2]
]

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您可以使用coods.unshift(new.slice())添加数组副本。 (见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice)。

或者,可能有一种方法可以改变代码的设计,这样就不会有问题,但如果没有,那么slice可能就是这样。您可能希望使用特定的克隆函数(多个库具有它们,或编写您自己的使用切片),以使其更具语义性。