745 votes

JavaScript plus rapide façon de reproduire un tableau - tranche vs boucle for

Pour dupliquer un Tableau en Javascript,

quelqu'un sait-il (et peut-être testé) si c'est plus rapide d'utiliser la tranche de la méthode:

var dup_array = original_array.slice();

ou de faire une boucle for:

for(var i = 0, l = original_array.lenght; i < l; ++i)
   dup_array[i] = original_array[i];

Mise à JOUR: (juste pour clarifier moi-même) je sais que les deux façons de faire seulement une copie superficielle: si original_array contient des références à des objets, les objets ne seront pas cloné, mais uniquement les références seront copiés à cet effet les deux tableaux aura des références sur les mêmes objets. Mais ce n'est pas le point de cette question.

Je pose seulement une question de vitesse.

888voto

Dan Points 7078

Il y a au moins 4 (!) principales façons de cloner un tableau:

  • boucle
  • constructeur
  • tranche / jonction
  • concat

Il y a plus de 14 sous - façons. Parcourir la référence filetage pour eux. De nombreux holywars ont combattu pour choisir le meilleur parmi eux... de Référence est le seul juge:

REPÈRES fil

Étrange de voir que Firefox 25, Safari 6, Safari pour iOS 7 et IE 11 sont encore dans l'âge de pierre et à l'aide d'un while boucle est le moyen le plus rapide pour eux. Je suppose que le clonage en une seule étape à l'aide des méthodes indigènes est préférable, car elles sont écrites en C / Assembleur et ouvert pour les optimisations internes (ils devraient utiliser direct à la mémoire du bloc de copie). C'est déjà mis en œuvre en V8 et je prédis qu'il devrait être mis en œuvre par d'autres dans l'avenir.

Réponse rapide:

 var b = a.slice();

À l'aide de concat est correct.

Cette réponse devient obsolète rapidement. Utiliser des critères de référence pour vérifier la situation réelle

309voto

KingKongFrog Points 3382

Techniquement est le moyen le plus rapide, **cependant** il est encore plus rapide si vous ajoutez le commencer des index.

est plus rapide que,

http://jsperf.com/Cloning-Arrays/3

53voto

Moyen le plus facile à profonde clone Array ou un objet :

26voto

lincolnk Points 7124

J’ai mis en place une démonstration rapide. http://jsbin.com/agugo3/Edit

Mes résultats sur IE8 sont 156/782/750, ce qui indiquerait que `` est beaucoup plus rapide dans ce cas.

6voto

ciembor Points 1472

Il y a beaucoup plus de solution propre :

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