在Perl中,我可以使用以下语法多次重复一个字符:
$a = "a" x 10; // results in "aaaaaaaaaa"
有没有一种简单的方法在Javascript中实现这一点?我显然可以使用一个函数,但我想知道是否有内置的方法,或者其他一些巧妙的技术。
在Perl中,我可以使用以下语法多次重复一个字符:
$a = "a" x 10; // results in "aaaaaaaaaa"
有没有一种简单的方法在Javascript中实现这一点?我显然可以使用一个函数,但我想知道是否有内置的方法,或者其他一些巧妙的技术。
当前回答
如果你经常重复自己的话,那么很方便:
String.prototype.repeat=String.prototype.repeat||函数(n){n=n||1;return Array(n+1).join(this);}alert('我们到了吗?\n没有。\n'。重复(10))
其他回答
以下是我使用的:
function repeat(str, num) {
var holder = [];
for(var i=0; i<num; i++) {
holder.push(str);
}
return holder.join('');
}
在一个新的ES6和声中,你将有自己的方法来重复。此外,ES6目前只是实验性的,该功能已在Edge、FF、Chrome和Safari中提供
"abc".repeat(3) // "abcabcabc"
当然,如果重复功能不可用,您可以使用旧的好数组(n+1).join(“abc”)
为了好玩,这里有另一种方法,使用toFixed()来格式化浮点数。
通过做
(0).toFixed(2)
(0).toFixed(3)
(0).toFixed(4)
我们得到
0.00
0.000
0.0000
如果前两个字符为0。我们可以使用这个重复模式来生成任何重复。
函数重复(str,nTimes){return(0).toFixed(n次).substr(2).replaceAll(“0”,str);}console.info(重复('3',5));console.info(重复('hello',4));
我将详细介绍@bonbon的答案。他的方法是一种“将N个字符附加到现有字符串”的简单方法,以防任何人需要这样做。例如,因为“a google”是1后跟100个零。
对于(var google='1';google.length<1+100;google+='0'){}document.getElementById('el').innerText=google;<div>这是“谷歌”:</div><div id=“el”></div>
注意:您必须将原始字符串的长度添加到条件中。
另一种快速重复n个字符的有趣方法是使用快速求幂算法的思想:
var repeatString = function(string, n) {
var result = '', i;
for (i = 1; i <= n; i *= 2) {
if ((n & i) === i) {
result += string;
}
string = string + string;
}
return result;
};