À condition que vos tableaux ne sont pas énormes (voir avertissement ci-dessous), vous pouvez utiliser l' push()
méthode de la matrice à laquelle vous souhaitez ajouter des valeurs. push()
peuvent prendre de multiples paramètres de sorte que vous pouvez utiliser ses apply()
méthode pour passer le tableau de valeurs à être poussé comme une liste de paramètres de la fonction. Ceci a l'avantage de l'utilisation de concat()
d'ajouter des éléments au tableau en place plutôt que de créer un nouveau tableau.
Cependant, il semble que pour les tableaux de grande taille (de l'ordre de 100 000 membres ou plus), cette astuce peut échouer. Pour ces tableaux, à l'aide d'une boucle est une meilleure approche. Voir http://stackoverflow.com/a/17368101/96100 pour plus de détails.
var newArray = [];
newArray.push.apply(newArray, dataArray1);
newArray.push.apply(newArray, dataArray2);
Vous pourriez vouloir généraliser cela dans une fonction:
function pushArray(arr, arr2) {
arr.push.apply(arr, arr2);
}
... ou ajoutez - Array
s'prototype:
Array.prototype.pushArray = function(arr) {
this.push.apply(this, arr);
};
var newArray = [];
newArray.pushArray(dataArray1);
newArray.pushArray(dataArray2);
... ou à imiter l'original push()
méthode en permettant à plusieurs paramètres en utilisant le fait que l' concat()
, comme push()
, permet à plusieurs paramètres:
Array.prototype.pushArray = function() {
this.push.apply(this, this.concat.apply([], arguments));
};
var newArray = [];
newArray.pushArray(dataArray1, dataArray2);
Voici une boucle basée sur la version de la dernier exemple, adapté pour les grands groupes et tous les principaux navigateurs, y compris 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]);
}
};