En JavaScript, j'ai une boucle qui a de nombreuses itérations, et à chaque itération, je crée une énorme chaîne avec de nombreux +=
opérateurs. Existe-t-il un moyen plus efficace de créer une chaîne? Je pensais créer un tableau dynamique où je continue à y ajouter des chaînes, puis à faire une jointure. Quelqu'un peut-il expliquer et donner un exemple de la manière la plus rapide de le faire?
163
Réponses:
Il semble basé sur des benchmarks de JSPerf que l'utilisation
+=
est la méthode la plus rapide, mais pas nécessairement dans tous les navigateurs.Pour créer des chaînes dans le DOM, il semble préférable de concaténer d'abord la chaîne, puis de l'ajouter au DOM, plutôt que de l'ajouter de manière itérative au dom. Vous devriez cependant évaluer votre propre cas.
(Merci @zAlbee pour la correction)
la source
+=
et faire une jointure sur un tableau.66%
(pour IE9) plus rapide que de créer une chaîne et d'ajouter ensuite la chaîne au DOM.Je n'ai aucun commentaire sur la concaténation elle-même, mais je tiens à souligner la suggestion de @Jakub Hampl:
est faux, car il est basé sur un test défectueux. Ce test ne s'ajoute jamais réellement dans le DOM.
Ce test fixe montre que créer la chaîne en une seule fois avant de la rendre est beaucoup, BEAUCOUP plus rapide. Ce n'est même pas un concours.
(Désolé, il s'agit d'une réponse distincte, mais je n'ai pas encore assez de représentants pour commenter les réponses.)
la source
Il y a trois ans que cette question a été répondue mais je fournirai quand même ma réponse :)
En fait, la réponse acceptée n'est pas entièrement correcte. Le test de Jakub utilise une chaîne codée en dur qui permet au moteur JS d'optimiser l'exécution du code (le V8 de Google est vraiment bon dans ce domaine!). Mais dès que vous utilisez des chaînes complètement aléatoires ( voici JSPerf ), la concaténation de chaînes sera à la deuxième place.
la source
Vous pouvez également faire un concat de chaîne avec des littéraux de modèle . J'ai mis à jour les tests JSPerf des autres affiches pour l'inclure.
la source