在Perl中,我可使用如下語法屢次重複一個字符: git
$a = "a" x 10; // results in "aaaaaaaaaa"
有沒有簡單的方法能夠在Javascript中完成此操做? 我顯然可使用函數,可是我想知道是否有任何內置方法或其餘一些巧妙的技術。 es6
/** * Repeat a string `n`-times (recursive) * @param {String} s - The string you want to repeat. * @param {Number} n - The times to repeat the string. * @param {String} d - A delimiter between each string. */ var repeat = function (s, n, d) { return --n ? s + (d || "") + repeat(s, n, d) : "" + s; }; var foo = "foo"; console.log( "%s\n%s\n%s\n%s", repeat(foo), // "foo" repeat(foo, 2), // "foofoo" repeat(foo, "2"), // "foofoo" repeat(foo, 2, "-") // "foo-foo" );
現在, repeat
字符串方法 幾乎在全部地方都已實現。 (它不在Internet Explorer中 。)所以,除非須要支持較舊的瀏覽器,不然只需編寫如下內容: github
"a".repeat(10)
在repeat
以前,咱們使用了這個技巧: 數組
Array(11).join("a") // create string with 10 a's: "aaaaaaaaaa"
(請注意,長度爲11的數組只會使您得到10個「 a」,由於Array.join
將參數放在數組元素之間 。) 瀏覽器
Simon還指出,根據此jsperf ,彷佛在Safari和Chrome(但不是Firefox)中,經過簡單地使用for循環附加(雖然不太簡潔)屢次重複字符是更快的。 jsp
若是重複不少,這很方便: ide
String.prototype.repeat = String.prototype.repeat || function(n){ n= n || 1; return Array(n+1).join(this); } alert( 'Are we there yet?\\nNo.\\n'.repeat(10) )
在新的ES6和聲中,您將具備重複執行此操做的本地方法。 ES6如今也僅是實驗性的,此功能已在Edge,FF,Chrome和Safari中提供 函數
"abc".repeat(3) // "abcabcabc"
而且確定地,若是重複功能不可用,則可使用老式的Array(n + 1).join("abc")
this
一種替代方法是: spa
for(var word = ''; word.length < 10; word += 'a'){}
若是您須要重複多個字符,請乘以條件:
for(var word = ''; word.length < 10 * 3; word += 'foo'){}
注意:您沒必要像word = Array(11).join('a')
同樣超調1。