JavaScript 中是否有一种实现 StringBuilder 的方法?

4

在JS中,字符串是不可变的,string builder是什么意思?就像C#中的那样? - mpm
有一篇关于字符串拼接技巧的帖子:https://dev59.com/SXVD5IYBdhLWcg3wBm5h。 - Peter Wooster
@camus,是的,我在考虑像C#中的StringBuilder - Eugeny89
3个回答

10
你可以将部分推入一个数组中,然后连接它:
var builder = []
builder.push( "some", "123" );
builder.push( "content" );
var str = builder.join("");

这个SO问题详细解释了它,还可以参考这个类


我更喜欢更简洁的表示法:var str = ['some', '123', 'content'].join('');(通常在项目之间有换行符) - keithjgrant

1

如果字符串是静态的,JavaScript 中的传统连接是最优的。

var foo = 'a' + 'b' + 'c' + 'd';

这在大多数浏览器中都是正确的。字符串连接

如果字符串根据程序可能是可变的,则两种方法同样有效。

var foo = ""+Math.random() + Math.random() + Math.random() + Math.random();
var foo = [Math.random(), Math.random(), Math.random(), Math.random()].join('');

浏览器之间的差异并不太大,但传统方式似乎稍微好一些string-random-concatenation


1

我认为,实现一个比普通字符串连接更快的 StringBuilder 从来都不是一件简单的事情。这也是 Builder 的显而易见的原因。

填充一个数组,如果它已满,则将其转换为字符串。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接