如何在不创建新数组的情况下扩展现有的 JavaScript 数组
如何在不创建新数组的情况下扩展现有的 JavaScript 数组
似乎没有一种方法可以使用另一个数组扩展现有的JavaScript数组,即模拟Python的extend
方法。
我想要实现以下功能:
>>> 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
)。
注意:这与如何向数组附加内容?不是重复的问题--这里的目标是将一个数组的全部内容添加到另一个数组中,并且“原地”进行,即不复制扩展数组的所有元素。
admin 更改状态以发布 2023年5月20日
更新于2018年:我的新回答更好:a.push(...b)
。请不要再赞这个回答了,因为它从来没有真正回答这个问题,只是一个2015年在Google上的hack 🙂
对于那些只是搜索“JavaScript数组扩展”并到达这里的人,你可以很好地使用Array.concat
。
var a = [1, 2, 3]; a = a.concat([5, 4, 3]);
Concat会返回新数组的副本,但线程发起者不想要这个。但你可能不在乎(对于大多数用途来说这应该是可以的)。
还有一些不错的ECMAScript 6语法糖可以使用,就是展开运算符:
const a = [1, 2, 3]; const b = [...a, 5, 4, 3];
(它也会复制。)