重复字符串 - Javascript
2022-08-30 00:17:04
返回重复任意次数的字符串的最佳或最简洁的方法是什么?
以下是我迄今为止最好的镜头:
function repeat(s, n){
var a = [];
while(a.length < n){
a.push(s);
}
return a.join('');
}
返回重复任意次数的字符串的最佳或最简洁的方法是什么?
以下是我迄今为止最好的镜头:
function repeat(s, n){
var a = [];
while(a.length < n){
a.push(s);
}
return a.join('');
}
新读者须知:这个答案很旧,而且不是很实用 - 它只是“聪明”,因为它使用数组的东西来完成String的事情。当我写“更少的过程”时,我肯定是指“更少的代码”,因为正如其他人在随后的答案中指出的那样,它的表现就像一头猪。因此,如果速度对您很重要,请不要使用它。
我会直接将此函数放在 String 对象上。无需创建数组,填充它,然后用空字符连接它,只需创建一个适当长度的数组,然后将其与所需的字符串连接即可。相同的结果,更少的过程!
String.prototype.repeat = function( num )
{
return new Array( num + 1 ).join( this );
}
alert( "string to repeat\n".repeat( 4 ) );
我已经测试了所有建议方法的性能。
这是我得到的最快的变体。
String.prototype.repeat = function(count) {
if (count < 1) return '';
var result = '', pattern = this.valueOf();
while (count > 1) {
if (count & 1) result += pattern;
count >>= 1, pattern += pattern;
}
return result + pattern;
};
或作为独立功能:
function repeat(pattern, count) {
if (count < 1) return '';
var result = '';
while (count > 1) {
if (count & 1) result += pattern;
count >>= 1, pattern += pattern;
}
return result + pattern;
}
它基于wnrph的算法。它真的很快。而且越大,与传统方法相比,它的速度就越快。count
new Array(count + 1).join(string)
我只改变了2件事:
pattern = this
pattern = this.valueOf()
if (count < 1)
断续器
在这里为那些感兴趣的人创建了一个小小的性能测试场。
变量计数
~ 0 ..100:
常量计数
= 1024:
使用它,如果您可以:)