Concat在开始时串起来

mat*_*e64 87 javascript string performance concat jsperf

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

Tho*_*sen 176

var mystr = "Doe";
mystr = "John " + mystr;
Run Code Online (Sandbox Code Playgroud)

这不适合你吗?

  • @JuicY_Burrito `+=` 附加到文本末尾。 (3认同)

Gab*_*oli 117

你可以这样做..

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

console.log(mystr);
Run Code Online (Sandbox Code Playgroud)

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


等等,忘了逃离一个空间. Wheeeeee [taptaptap] EEEEEE.

  • 我很想在xkcd地带上投票.好东西!您优雅的解决方案很可能更慢,因为它实例化了正则表达式处理器. (9认同)
  • @Rolf不太可能.它肯定**比'prestring +'原始字符串'慢!`解决方案. (8认同)
  • @GabrielePetrioli优点是你可以添加到你的点链(管道).你甚至可以追加一些东西,比如mystr.replace(/ $ /,'by Gabriele').它可能会慢一点,但它正是我想要的. (2认同)
  • 也许这应该是新标准:每个帖子还必须包含相关的XKCD。 (2认同)

小智 13

ES6:

let after = 'something after';
let text = `before text ${after}`;
Run Code Online (Sandbox Code Playgroud)

  • 虽然此代码段可以解决问题,但[包括解释](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)确实有助于提高帖子的质量.请记住,您将来会回答读者的问题,而这些人可能不知道您的代码建议的原因.还请尽量不要在代码中加上解释性注释,这会降低代码和解释的可读性! (7认同)
  • ES6:字符串插值 (2认同)

Kyl*_*Mit 12

由于问题在于最快的方法是什么,我想我会添加一些性能指标。

TL; DR赢家很大程度上是+运营商,不要使用正则表达式

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

在此处输入图片说明


小智 8

你也可以这样做

"".concat("x","y")
Run Code Online (Sandbox Code Playgroud)

  • 为什么不是 "x".concat("y")?只是为了添加另一个字符串实例并使其变慢? (2认同)

Ila*_*oul 6

如果您想使用名为ES 2015(又名ES6)的新版Javascript,您可以使用ES 2015引入的模板字符串,从而推荐一些指南(如airbnb的一个):

const after = "test";
const mystr = `This is: ${after}`;
Run Code Online (Sandbox Code Playgroud)