在JavaScript中将一个数组附加到另一个数组[重复]
Posted
技术标签:
【中文标题】在JavaScript中将一个数组附加到另一个数组[重复]【英文标题】:Append an array to another array in JavaScript [duplicate] 【发布时间】:2012-03-27 21:27:00 【问题描述】:此问题与以下问题完全相同:How to append an array to an existing javascript Array?
如何在 JavaScript 中将一个数组附加到另一个数组?
人们可能会用其他方式表达这个问题:
将一个数组添加到另一个数组 连接/连接数组 用另一个数组扩展一个数组 将一个数组的内容放到另一个数组中我花了一些时间寻找这个问题的答案。有时像这样最简单的问题最难找到答案,所以我希望在这里添加问题,并根据blog post 提供大量关键词和短语。请随时使用任何其他有用信息来回答此问题,或编辑下面的关键词和短语。
【问题讨论】:
回答自己的问题可以,直接把回答放在问题本身不可以。请从问题中删除答案,将其作为答案发布并自我接受:-)。此外,其他人可能会提供更好的答案,超过你的;-)。 但是问题应该用答案来回答,而不是在问题中。但无论如何它是dupe,multiple times,所以我投票结束。无论如何,搜索“javascript concatenate arrays”出现了很多点击。 @Dave Newton:问题是如果您不知道使用关键字“连接”,那么您将找不到任何东西。我认为这就是为什么很难找到简单问题的答案的原因。专家就像“只需输入这个!”。但是寻找该问题答案的人不会知道使用专家知道的关键字进行搜索。 @Tomasz Nurkiewicz:我可以将答案移至答案部分。但是,我想给其他人一个回答问题并获得分数的机会,而不是为自己创造分数。 @DutrowLLC "Append javascript array" 返回大部分相同的,包括this one 和one I posted above; append 是您的标题/术语。我有点同情,但是在谷歌或 SO 上搜索都会出现这些。如果我在新问题中输入您的标题,它也会显示上述两个中的后者。 【参考方案1】:如果要修改原始数组而不是返回新数组,请使用.push()
...
array1.push.apply(array1, array2);
array1.push.apply(array1, array3);
我使用.apply
一次推送数组2
和3
的各个成员。
或者...
array1.push.apply(array1, array2.concat(array3));
要处理大数组,可以分批进行。
for (var n = 0, to_add = array2.concat(array3); n < to_add.length; n+=300)
array1.push.apply(array1, to_add.slice(n, n+300));
如果你经常这样做,请创建一个方法或函数来处理它。
var push_apply = Function.apply.bind([].push);
var slice_call = Function.call.bind([].slice);
Object.defineProperty(Array.prototype, "pushArrayMembers",
value: function()
for (var i = 0; i < arguments.length; i++)
var to_add = arguments[i];
for (var n = 0; n < to_add.length; n+=300)
push_apply(this, slice_call(to_add, n, n+300));
);
并像这样使用它:
array1.pushArrayMembers(array2, array3);
var push_apply = Function.apply.bind([].push);
var slice_call = Function.call.bind([].slice);
Object.defineProperty(Array.prototype, "pushArrayMembers",
value: function()
for (var i = 0; i < arguments.length; i++)
var to_add = arguments[i];
for (var n = 0; n < to_add.length; n+=300)
push_apply(this, slice_call(to_add, n, n+300));
);
var array1 = ['a','b','c'];
var array2 = ['d','e','f'];
var array3 = ['g','h','i'];
array1.pushArrayMembers(array2, array3);
document.body.textContent = JSON.stringify(array1, null, 4);
【讨论】:
这种方式很糟糕,不适用于> 500个元素数组 tl;dr:array1 = [].concat(array1, array2, array3 /*, .. */);
更好
@Alex:无法修改原始数组,这就是问题所在。当您已经有一个数组时,最好使用[].concat(...
。应该是array1.concat(array2, array3)
。
@squint point,但array1.concat(array2, array3)
也不要这样做,因为concat()
返回一个新数组。
我最喜欢重复问题的答案:***.com/questions/1374126/…以上是关于在JavaScript中将一个数组附加到另一个数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章
在javascript中将对象数组复制到另一个数组中(深度复制)
在javascript中将对象数组复制到另一个数组而没有对象引用(深拷贝)
我可以在javascript中将数组附加到“formdata”吗?