Détails
Copier les éléments d'un tableau dans un autre tableau
J'ai un tableau JavaScript dataArray
que je veux pousser dans un nouveau tableau newArray
. Sauf que je ne veux pas que newArray[0]
soit dataArray
. Je veux pousser tous les éléments dans le nouveau tableau :
var newArray = [];
newArray.pushValues(dataArray1);
newArray.pushValues(dataArray2);
// ...
ou encore mieux :
var newArray = new Array (
dataArray1.values(),
dataArray2.values(),
// ... where values() (or something equivalent) would push the individual values into the array, rather than the array itself
);
Ainsi, le nouveau tableau contient toutes les valeurs des tableaux de données individuels. Existe-t-il un raccourci comme pushValues
pour que je n'aie pas à itérer sur chaque dataArray
individuel, en ajoutant les éléments un par un ?
846
3
Utilisez la fonction [concat][1], comme suit :
La valeur de
newArray
sera[1, 2, 3, 4]
(arrayA
etarrayB
restent inchangés ;concat
crée et retourne un nouveau tableau pour le résultat).[1] : https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/concat
Si vos tableaux ne sont pas énormes (voir l'avertissement ci-dessous), vous pouvez utiliser la méthode
push()
du tableau auquel vous souhaitez ajouter des valeurs.push()
peut prendre plusieurs paramètres, vous pouvez donc utiliser sa méthodeapply()
pour passer le tableau de valeurs à pousser comme une liste de paramètres de fonction. Cela présente l'avantage, par rapport à l'utilisation deconcat()
, d'ajouter des éléments au tableau en place plutôt que de créer un nouveau tableau.Cependant, il semble que pour les grands tableaux (de l'ordre de 100 000 membres ou plus), cette astuce peut échouer. Pour de tels tableaux, l'utilisation d'une boucle est une meilleure approche. Voir https://stackoverflow.com/a/17368101/96100 pour plus de détails.
Vous pourriez vouloir généraliser ceci en une fonction :
... ou l'ajouter au prototype de
Array
's :... ou émuler la méthode originale
push()
en autorisant plusieurs paramètres en utilisant le fait queconcat()
, commepush()
, autorise plusieurs paramètres :Voici une version en boucle du dernier exemple, adaptée aux grands tableaux et à tous les principaux navigateurs, y compris IE
Cela résout-il votre problème ?