将数组项复制到另一个数组中
我有一个JavaScript数组dataArray
,我想把它推入一个新的数组newArray
。只是我不希望newArray[0]
是dataArray
。我想把所有的项目都推入新的数组中。
var newArray = [];
newArray.pushValues(dataArray1);
newArray.pushValues(dataArray2);
// ...
甚至更好。
var newArray = new Array (
dataArray1.values(),
dataArray2.values(),
// ... where values() (or something equivalent) would push the individual values into the array, rather than the array itself
);
所以现在新的数组包含了各个数据数组的所有值。 有没有一些类似于pushValues'的速记方法,这样我就不必在每个单独的
dataArray'上进行迭代,一个一个地添加项目?
846
3
使用concat函数,像这样。
newArray
的值将是[1, 2, 3, 4]
(arrayA
和arrayB
保持不变;concat
为结果创建并返回一个新数组)。只要你的数组不是很大(见下面的注意事项),你可以使用你想追加值的数组的
push()
方法。push()
可以接受多个参数,所以你可以使用它的apply()
方法,把要推送的数组作为一个函数参数的列表来传递。与使用concat()
相比,这样做的好处是在原地向数组添加元素,而不是创建一个新的数组。然而,对于大型数组(100,000个成员或更多),**这一招似乎会失败。对于这样的数组,使用一个循环是一个更好的方法。详见https://stackoverflow.com/a/17368101/96100。
你可能想把它概括成一个函数。
...或者将其添加到
Array
'的原型中。...或者模仿原来的
push()
方法,利用concat()
和push()
一样,允许多参数的事实,允许多参数。这里是上一个例子的基于循环的版本,适合大数组和所有主要浏览器,包括IE
这能解决你的问题吗?