如果您的数组不是很大(请参阅下面的警告),您可以使用push()
要附加值的数组的方法。push()
可以采用多个参数,因此您可以使用其apply()
方法将要推送的值数组作为函数参数列表传递。与使用concat()
将元素添加到数组中而不是创建新数组相比,这具有优势。
然而,似乎对于大型数组(100,000 个或更多成员的数量级),这个技巧可能会失败。对于此类数组,使用循环是更好的方法。有关详细信息,请参阅https://stackoverflow.com/a/17368101/96100。
var newArray = [];
newArray.push.apply(newArray, dataArray1);
newArray.push.apply(newArray, dataArray2);
您可能希望将其概括为一个函数:
function pushArray(arr, arr2) {
arr.push.apply(arr, arr2);
}
...或将其添加到Array
的原型中:
Array.prototype.pushArray = function(arr) {
this.push.apply(this, arr);
};
var newArray = [];
newArray.pushArray(dataArray1);
newArray.pushArray(dataArray2);
... 或push()
通过使用允许多个参数的事实来模拟原始方法concat()
,例如push()
,允许多个参数:
Array.prototype.pushArray = function() {
this.push.apply(this, this.concat.apply([], arguments));
};
var newArray = [];
newArray.pushArray(dataArray1, dataArray2);
这是上一个示例的基于循环的版本,适用于大型数组和所有主流浏览器,包括 IE <= 8:
Array.prototype.pushArray = function() {
var toPush = this.concat.apply([], arguments);
for (var i = 0, len = toPush.length; i < len; ++i) {
this.push(toPush[i]);
}
};