Em JavaScript, eu tenho um loop que possui muitas iterações e, em cada iteração, estou criando uma string enorme com muitos +=
operadores. Existe uma maneira mais eficiente de criar uma string? Eu estava pensando em criar uma matriz dinâmica na qual continuo adicionando strings a ela e depois faço uma junção. Alguém pode explicar e dar um exemplo da maneira mais rápida de fazer isso?
163
Respostas:
Parece baseado nos benchmarks do JSPerf que o uso
+=
é o método mais rápido, embora não necessariamente em todos os navegadores.Para construir seqüências de caracteres no DOM, parece melhor concatenar a sequência primeiro e depois adicioná-la ao DOM, em vez disso, adicionar iterativamente ao dom. Você deve avaliar seu próprio caso.
(Obrigado @zAlbee pela correção)
fonte
+=
e fazer uma junção em uma matriz.66%
(para o IE9) mais rápido do que criar uma string e adicioná-la ao DOM.Não tenho nenhum comentário sobre a concatenação em si, mas gostaria de salientar que a sugestão de @Jakub Hampl:
está errado, porque é baseado em um teste defeituoso. Na verdade, esse teste nunca é anexado ao DOM.
Este teste fixo mostra que a criação da string de uma só vez antes da renderização é muito, muito mais rápida. Nem sequer é um concurso.
(Desculpe, esta é uma resposta separada, mas ainda não tenho representante suficiente para comentar as respostas.)
fonte
Três anos atrás, desde que esta pergunta foi respondida, mas vou fornecer a minha resposta mesmo assim :)
Na verdade, a resposta aceita não está totalmente correta. O teste de Jakub usa string codificada, que permite ao mecanismo JS otimizar a execução do código (o V8 do Google é realmente bom nisso!). Mas assim que você usar cadeias completamente aleatórias ( aqui é JSPerf ), a concatenação de cadeias estará em um segundo lugar.
fonte
Você também pode fazer concatenação de strings com literais de modelo . Atualizei os testes JSPerf dos outros pôsteres para incluí-lo.
fonte