Le moyen le plus efficace pour concaténer des chaînes de caractères en JavaScript?
En JavaScript, j'ai une boucle qui a un nombre d'itérations, et à chaque itération, je suis entrain de créer un énorme chaîne de caractères avec beaucoup de +=
opérateurs. Est-il un moyen plus efficace pour créer une chaîne de caractères? Je pensais à créer un tableau dynamique où je continue à ajouter des cordes pour ensuite faire une jointure. Quelqu'un peut-il expliquer et donner un exemple de la façon la plus rapide pour ce faire?
- De quoi êtes-vous à l'aide de la chaîne? Toute la performance conseils sur ce qui va varier en fonction de votre environnement, de la tailles de vos chaînes, comment un particulier js moteur optimise les différentes opérations, etc.
- peut-être doublon de stackoverflow.com/questions/7299010/...
- Suivez ce lien jsperf.com/join-concat/2
- J'utilise IE9 mais sa en mode de compatibilité IE8 (que je ne peux pas changer). L'énorme chaîne de caractères est quelque chose que je vais insérer dans le DOM à l'aide de jquery.
- Voir aussi JavaScript de concaténation de chaîne
Vous devez vous connecter pour publier un commentaire.
Semble fondée sur des critères à JSPerf que l'utilisation de
+=
est la méthode la plus rapide, mais pas nécessairement dans tous les navigateurs.Pour la construction de chaînes de caractères dans les DOM, il semble être mieux pour concaténer la chaîne, puis ajouter les DOM, plutôt que de manière itérative l'ajouter au dom. Vous devez tester votre propre cas.
(Merci @zAlbee pour la correction)
+=
et de faire une jointure sur une table.66%
(Pour IE9) plus rapide que la création d'une chaîne et puis en ajoutant la chaîne pour les DOM.Je n'ai pas de commentaire sur la concaténation lui-même, mais je tiens à souligner que @Jakub Hampl suggestion:
est faux, car il est basé sur les lacunes du test. Ce test n'a jamais véritablement ajoute dans le DOM.
Ce test fixes montre que la création de la chaîne à la fois avant le rendu, il est beaucoup, BEAUCOUP plus rapide. Il n'est même pas un concours.
(Désolé c'est une réponse distincte, mais je n'ai pas assez de rep pour commenter les réponses à ce jour.)
Trois années ont passé depuis que cette question a été répondu, mais je vais donner ma réponse de toute façon 🙂
En fait, a accepté la réponse n'est pas entièrement correct. Jakub du test utilise une chaîne codée en dur qui permet JS moteur pour optimiser l'exécution de code (Google V8 est vraiment bon dans ce genre de choses!).
Mais dès que vous utilisez complètement aléatoire des chaînes de caractères (voici JSPerf) puis de concaténation de chaîne sera sur une deuxième place.
Vous pouvez aussi faire de la chaîne concat avec modèle de littéraux. J'ai mis à jour les autres posters JSPerf tests de l'inclure.