似乎没有办法用另一个数组扩展现有的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)的情况下有效。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
该.push方法可以采用多个参数。您可以使用传播运算符将第二个数组的所有元素作为参数传递给.push:
a.push(...b)
如果您的浏览器不支持ECMAScript 6,则可以.apply改用:
a.push.apply(a, b)
或者,如果您认为更清楚:
Array.prototype.push.apply(a,b)
请注意,如果数组b太长(麻烦开始于大约100,000个元素,具体取决于浏览器),所有这些解决方案将失败并出现堆栈溢出错误。如果不能保证b足够短,则应使用其他答案中所述的基于标准循环的技术。
问题来源于stack overflow