我正在尝试找到一种更好的方法来连接JavaScript ES6中的字符串。下面是当前代码段。
方法1:
function concat(...strings){
return ''.concat(...strings);
}
方法2:
function concat(...strings){
return strings.join('');
}
示例:
concat("Hey", "There", "How", "Are", "You"); // output is "HeyThereHowAreYou"
我不确定这些方法的性能,因为参数数量可能会增加。任何评论都将受到高度赞赏,这可能是最好的,或者任何其他方法都可以提供帮助。
答案 0 :(得分:3)
字符串连接可以通过多种方式完成
加(+)运算符。一旦运算符之一是字符串,+运算符就会进行字符串连接。然后,另一个操作数将转换为字符串。示例:
“问好” + 7 +“快!” ‘快打招呼7次!’
或者,您可以使用+ =其中
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)提到绳索2是一种可能的优化技术。因此,在JavaScript中不需要StringBuilder。
只需使用+ =即可完成。
参考文献:
“ Re:String concatenation” –布伦丹·艾希(Brendan Eich)的电子邮件,指出+在现代JavaScript引擎上速度更快。
“ Ropes: an Alternative to Strings (1995)”,作者:Hans-J。 Boehm,Russ Atkinson,Michael Plass。
答案 1 :(得分:2)
我建议继续使用_.reduce。 有人说它在字符串数组周围使用+ =类型的逻辑来连接,这是高效的 jsperf
摘要:
_.reduce(['x', 'y', 'z'], function(accumulator, currentItem) {
return accumulator + currentItem;
});
// xyz
参考:
答案 2 :(得分:0)
/*If you're not sure about nos argument passed then use*/
function concat() {
const args = Array.from(arguments); /*convert arguments to array*/
return args.join('');
}
var resultant_str = concat("Hey", "There", "How", "Are", "You");