javascript - 使用扩展参数连接字符串的最有效方法

标签 javascript ecmascript-6 string-concatenation

我正在尝试找到一种更好的方法来连接 javascript ES6 中的字符串。以下是当前的代码片段。

方法一:

function concat(...strings){
    return ''.concat(...strings);
}

方法2:

function concat(...strings){
    return strings.join('');
}

示例:

concat("Hey", "There", "How", "Are", "You"); // output is "HeyThereHowAreYou"

我不确定这些方法的性能,因为参数数量可能会增加。任何评论都将受到高度赞赏,这可能是最好的,或者任何其他方法都可以提供帮助。

最佳答案

字符串连接可以通过多种方式完成

  • 加号 (+) 运算符。当 + 操作符的操作数之一是字符串时,它就会进行字符串连接。然后另一个操作数被转换为字符串。示例:

    "Say hello " + 7 + " times fast!" ’Say hello 7 times fast!’

  • 或者,您可以使用 += where

    a += b

    的缩写

    a = a + b

  • 连接字符串数组。收集要连接到数组中的字符串,然后将其连接起来。

var arr = [];

 arr.push("Say hello ");

 arr.push(7);

 arr.push(" times fast");

 arr.join("")
’Say hello 7 times fast’

哪个更快?

字符串是不可变的,大多数结果是字符串的字符串操作都会生成新字符串。

因此,C# 或 Java 等字符串处理与 JavaScript 类似的语言都有特殊的类来帮助连接字符串。例如,C# 调用此类 StringBuilder。然而,现代 JavaScript 引擎在内部优化了 + 运算符 1 。 Tom Schuster 提到 Ropes 2作为一种可能的优化技术。因此,JavaScript 中不需要 StringBuilder。

只需使用 += 即可完成。

引用文献:

“回复:String concatenation ” – Brendan Eich 的电子邮件指出 + 在现代 JavaScript 引擎上速度更快。

Ropes: an Alternative to Strings (1995) ”汉斯-J.伯姆、拉斯·阿特金森、迈克尔·普拉斯。

关于javascript - 使用扩展参数连接字符串的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51035223/

相关文章:

javascript - 提交前将值传递给隐藏的输入值

javascript - 传播运算符不适用于以字符串为键的对象

c# - 如何记录提交表单的链接点击?

javascript - 从字符串中提取公司和公司代码

javascript - 如何制作类似维基百科和 Facebook 的悬停效果

javascript - 获取与特定字符串匹配的对象的 json 数组的长度

javascript - JavaScript 中数组是如何实现的?那些好的旧 list 怎么了?

c++ - 连接字符串和数字

c - C 中使用 strcat 进行动态字符串连接

sql-server - 如何使用 dplyr 连接 SQL Server 中表中多列的字符串?