将文本添加到字符串的开头

IT技术 javascript string performance concat jsperf
2021-03-04 05:37:51

在字符串的开头添加新值的最快方法是什么?

6个回答
var mystr = "Doe";
mystr = "John " + mystr;

这不适合你吗?

等待不会使用 += 工作,或者它会添加到最后
2021-05-02 05:37:51
@JuicY_Burrito+=附加到文本末尾。
2021-05-05 05:37:51

你可以这样做..

var mystr = 'is my name.';
mystr = mystr.replace (/^/,'John ');

console.log(mystr);

免责声明:http : //xkcd.com/208/


等等,忘记逃出空间了。 Wheeeeeee[taptaptap]eeeeee。

@GabrielePetrioli 优点是您可以添加到您的点链(管道)。您甚至可以附加一些内容,例如 mystr.replace (/$/,' by Gabriele')。它可能会更慢,但这正是我正在寻找的。
2021-04-27 05:37:51
@Rolf 不太可能。肯定prestring + 'original string';解决方案
2021-04-30 05:37:51
我很想为 xkcd 条投票赞成这个。好东西!您的优雅解决方案很可能较慢,因为它实例化了正则表达式处理器。
2021-05-06 05:37:51
出于某种原因,我认为桌子上的电脑实际上是摇篮中的婴儿,并且还认为这家伙打婴儿很奇怪。
2021-05-11 05:37:51
也许这应该是新的标准:每个帖子还必须包含相关的 XKCD。
2021-05-14 05:37:51

由于问题是关于最快的方法是什么,我想我会抛出一些性能指标。

TL;DR赢家,以较大的优势,是+运营商,永远不要使用正则表达式

https://jsperf.com/prepend-text-to-string/1

在此处输入图片说明

如果将短字符串附加到长字符串或将长字符串附加到短字符串,则可能会有显着差异。由于我们对将短字符串添加到任意字符串感兴趣,这就是测试中所做的:将短字符串添加到增加更长的字符串。循环用于测试 1000 种不同长度的后缀字符串,以避免测试短或长。@KyleMit,如果您有更好的想法,请随时在下一次测试迭代中实现它。
2021-04-30 05:37:51
由于我们想要测试prepend,而不仅仅是连接,我更新了测试:jsperf.com/prepend-text-to-string/5
2021-05-06 05:37:51
@metalim,您对测试有什么重要的注意事项吗?前置只是字符串连接的有序一半。另外,对于jsPerf,你不需要在循环中抛出测试用例;jsPerf 调用每个方法数千次以获得分数的基线。Perf 测试优化了特定场景,我不确定它在 1,000 次之前添加相同的字符串有多常见。
2021-05-13 05:37:51

ES6:

let after = 'something after';
let text = `before text ${after}`;
ES6:字符串插值
2021-04-30 05:37:51
虽然此代码片段可能会解决问题,但包括解释确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而那些人可能不知道您提出代码建议的原因。也请尽量不要在您的代码中添加解释性注释,这会降低代码和解释的可读性!
2021-05-02 05:37:51

你也可以这样做

"".concat("x","y")
为什么不是 "x".concat("y")?只是为了添加另一个字符串实例并使其变慢?
2021-04-28 05:37:51