JavaScript中如何建構/連接字串?
P粉513316221
2023-08-27 19:01:23
<p>JavaScript 支援替換/內插嗎? </p>
<h3>概述</h3>
<hr />
<p>我正在開發一個 JavaScript 項目,隨著它變得越來越大,保持字串良好的狀態變得越來越困難。我想知道在 JavaScript 中建構或建構字串的最簡單和最傳統的方法是什麼。 </p>
<p>到目前為止我的經驗:</p>
<blockquote>
<p>隨著專案變得更加複雜,字串連接開始看起來很醜陋並且變得更難維護。 </p>
</blockquote>
<p>此時最重要的是簡潔性和可讀性,考慮一堆移動部件,而不僅僅是 2-3 個變數。 </p>
<p>同樣重要的是,它目前已得到主要瀏覽器的支援(即至少支援 ES5)。 </p>
<p>我知道 JavaScript 連結簡寫:</p>
<pre class="brush:php;toolbar:false;">var x = 'Hello';
var y = 'world';
console.log(x ', ' y);</pre>
<p>還有 String.concat 函數。 </p>
<p>我正在尋找更簡潔的東西。 </p>
<p>Ruby 和 Swift 以一種有趣的方式做到了這一點。 </p>
<p><strong>紅寶石</strong></p>
<pre class="brush:php;toolbar:false;">var x = 'Hello'
var y = 'world'
print "#{x}, #{y}"</pre>
<p><strong>斯威夫特</strong></p>
<pre class="brush:php;toolbar:false;">var x = "Hello"
var y = "world"
println("(x), (y)")</pre>
<p>我想 JavaScript 中可能有類似的東西,也許類似 sprintf.js。 </p>
<h3>問題</h3>
<hr />
<p>可以在沒有第三方函式庫的情況下完成此操作嗎?如果沒有,我可以用什麼? </p>
令我失望的是,其他答案中沒有人將「最佳方式」解釋為「最快方式」...
我從這裡提取了兩個範例,並添加了
str。 join()
和str.reduce()
來自上面 nishanths 的回答。以下是我在 Linux 上的 Firefox 77.0.1 上的結果。注意:我在測試這些時發現,如果我將
str = str.concat()
和str =
直接放在之前或之後彼此之間,第二個總是表現得更好一些...所以我單獨運行這些測試並評論其他測試的結果...即使如此,如果我重新運行它們,它們的速度也會很大變化,所以我每個都測量了 3 次。
一次 1 個字元:
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 個字串:
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 字串
#所以,無論是一次附加1個字元還是一次附加26個字串:
str = str.concat()
和str =
之間的平手[].reduce()
,然後是[].join()
我的程式碼,易於在瀏覽器控制台中運行:
使用ES6,你可以使用
範本字串: p>
ES5 及以下版本:
使用
運算子
字串的
concat (..)
或者,使用陣列方法:
join( ..)
:或更奇特,reduce(..) 與上述任何一項組合: