如何使用另一个数组扩展现有的 JavaScript 数组,而不创建新数组

2023-12-11

似乎没有办法用另一个数组扩展现有的 JavaScript 数组,即模拟 Python 的extend method.

我想实现以下目标:

>>> a = [1, 2]
[1, 2]
>>> b = [3, 4, 5]
[3, 4, 5]
>>> SOMETHING HERE
>>> a
[1, 2, 3, 4, 5]

我知道有一个a.concat(b)方法,但它创建一个新数组,而不是简单地扩展第一个数组。我想要一种能够在以下情况下有效工作的算法a明显大于b(即不复制a).

Note: This is not a duplicate of How to append something to an array? -- the goal here is to add the whole contents of one array to the other, and to do it "in place", i.e. without copying all elements of the extended array.


The .push方法可以采用多个参数。您可以使用扩展运算符将第二个数组的所有元素作为参数传递给.push:

>>> a.push(...b)

如果您的浏览器不支持 ECMAScript 6,您可以使用.apply反而:

>>> a.push.apply(a, b)

或者,如果您认为更清楚的话:

>>> Array.prototype.push.apply(a,b)

请注意,如果数组存在,所有这些解决方案都将失败并出现堆栈溢出错误b太长(大约 100,000 个元素就会出现问题,具体取决于浏览器)。
如果你不能保证b足够短,您应该使用另一个答案中描述的基于标准循环的技术。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用另一个数组扩展现有的 JavaScript 数组,而不创建新数组 的相关文章

随机推荐