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

Pass array into array of arrays by value, not reference

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

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

我想通过在每次代码运行时添加一个不断变化的变量new来做到这一点:

coods.unshift(new);

唯一的问题是(我花了很长时间才发现),当将一个新数组传递给更大的数组时,它只是传递一个引用,而不是值本身,所以我最终得到了一个 coods数组:

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

我该如何解决这个问题?

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

或者,可能有一种方法可以改变代码的设计,这样这就不是问题,但如果不是,那么 slice 可能是可行的方法。你可能想要使用一个特定的克隆函数(几个库有它们,或者编写你自己的使用 slice 的函数)来使它更语义化。