361 votes

Quel est le moyen le plus efficace de concaténer des tableaux N en JavaScript?

Quel est le moyen le plus efficace de concaténer N tableaux d'objets en JavaScript ?

Les tableaux sont modifiables et le résultat peut être stocké dans l'un des tableaux d'entrée.

431voto

Tim Down Points 124501

Si vous êtes à la concaténation de plus de deux matrices, concat() est le chemin à parcourir pour plus de commodité et de performance.

var a = [1, 2], b = ["x", "y"], c = [true, false];
var d = a.concat(b, c);
console.log(d); // [1, 2, "x", "y", true, false];

Pour la concaténation de seulement deux tableaux, à l'aide de push.apply() peut être utilisé à la place pour le cas de l'ajout d'éléments d'un tableau à la fin de l'autre, sans la production d'un nouveau tableau. Avec slice() il peut également être utilisé à la place de concat() , mais il semble y avoir aucun avantage en termes de performance de le faire.

var a = [1, 2], b = ["x", "y"];
a.push.apply(a, b);
console.log(a); // [1, 2, "x", "y"];

193voto

ninjagecko Points 25709
 [].concat.apply([], [array1, array2, ...])
 

edit : preuve d'efficacité: http://jsperf.com/multi-array-concat/7

31voto

dogbane Points 85749

La méthode concat() est utilisée pour joindre deux ou plusieurs tableaux. Cela ne change pas les tableaux existants, il ne retourne qu'une copie des tableaux joints.

 array1 = array1.concat(array2, array3, array4, ..., arrayN);
 

4voto

Dmitri Farkov Points 3743

Facilement avec la fonction concat:

 var a = [1,2,3];
var b = [2,3,4];
a = a.concat(b);
>> [1,2,3,2,3,4]
 

Merci

4voto

gor Points 6313

Vous pouvez utiliser le site jsperf.com pour comparer les performances. Voici le lien pour concat .

Ajout de la comparaison entre:

 var c = a.concat(b);
 

et:

 var c = [];
for (i = 0; i < a.length; i++) {
    c.push(a[i]);
}
for (j = 0; j < b.length; j++) {
    c.push(b[j]);
}
 

La seconde est presque 10 fois plus lente en chrome.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X