按值将数组传递给数组数组,而不是引用
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 的函数)来使它更语义化。
我有一个坐标数组 (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 的函数)来使它更语义化。