Comment construire/concaténer des chaînes en JavaScript ?
P粉513316221
2023-08-27 19:01:23
<p>JavaScript prend-il en charge le remplacement/l'interpolation ? </p>
<h3>Vue d'ensemble</h3>
<heure />
<p>Je travaille sur un projet JavaScript et à mesure qu'il grandit, il devient de plus en plus difficile de garder les chaînes en bon état. J'aimerais savoir quelle est la manière la plus simple et la plus traditionnelle de construire ou de construire une chaîne en JavaScript. </p>
<p>Mon expérience jusqu'à présent :</p>
<blockquote>
<p>À mesure que les projets deviennent plus complexes, la concaténation de chaînes commence à paraître moche et devient plus difficile à maintenir. </p>
</blockquote>
<p>La chose la plus importante à ce stade est la simplicité et la lisibilité. Pensez à un ensemble de pièces mobiles, pas seulement à 2 ou 3 variables. </p>
<p>Tout aussi important, il est actuellement pris en charge par les principaux navigateurs (c'est-à-dire au moins ES5). </p>
<p>Je connais l'abréviation de la connexion JavaScript : </p>
<pre class="brush:php;toolbar:false;">var x = 'Bonjour';
var y = 'monde';
console.log(x + ', ' + y);</pre>
<p>Il existe également la fonction String.concat. </p>
<p>Je cherche quelque chose de plus propre. </p>
<p>Ruby et Swift le font d'une manière intéressante. </p>
<p><strong>Ruby</strong></p>
<pre class="brush:php;toolbar:false;">var x = 'Bonjour'
var y = 'monde'
imprimer "#{x}, #{y}"</pre>
<p><strong>Swift</strong></p>
<pre class="brush:php;toolbar:false;">var x = "Bonjour"
var y = "monde"
println("(x), (y)")</pre>
<p>Je pensais qu'il pourrait y avoir quelque chose de similaire en JavaScript, peut-être quelque chose comme sprintf.js. </p>
<h3>Question</h3>
<heure />
<p>Est-ce possible sans bibliothèque tierce ? Si non, que puis-je utiliser ? </p>
Je suis déçu que personne dans les autres réponses n'explique « la meilleure façon » comme signifiant « la manière la plus rapide »...
J'ai tiré deux exemples de ici et ajouté
str。 join()
和str.reduce()
de la réponse de nishanths ci-dessus. Voici mes résultats sur Firefox 77.0.1 sous Linux.Remarque : J'ai découvert en les testant que si je mets
str = str.concat()
和str +=
directement avant ou après l'autre, le second fonctionnait toujours un peu mieux... j'ai donc effectué ces tests individuellement et commenté les autres Résultat...Même ainsi , si je les relance, leurs vitesses changent beaucoup , j'ai donc mesuré chacun 3 fois.
1 personnage à la fois :
str = str.concat()
:841、439、956 毫秒 / 1e7 concat() 的
............str +=
:949、1130、664 毫秒 / 1e7 +='s
.......[].join()
:[] 中有 3350, 2911, 3522 ms / 1e7 个字符
......[].reduce()
:[] 中的 3954、4228、4547 毫秒 / 1e7 个字符
26 cordes à la fois :
str = str.concat()
:444、744、479 毫秒 / 1e7 concat() 的
............str +=
:1037, 473, 875 毫秒 / 1e7 +='s
........[].join()
:2693, 3394, 3457 ms / 1e7 字符串在 []
......[].reduce()
:[] 中的 2782、2770、4520 ms / 1e7 字符串
Donc, que ce soit en ajoutant 1 caractère à la fois ou 26 chaînes à la fois :
str = str.concat()
和str +=
[].reduce()
,然后是[].join()
Mon code, facile à exécuter dans la console du navigateur :
Avec ES6, vous pouvez utiliser
Chaîne de modèle : p>
Versions ES5 et inférieures :
Utilisez
+
opérateurchaîne de
concat (..)
Ou utilisez la méthode du tableau :
join( ..)
:Ou de manière plus exotique, réduire(..) combiné avec l'un des éléments ci-dessus :