重複字符N次

在Perl中,我可使用如下語法屢次重複一個字符: git

$a = "a" x 10; // results in "aaaaaaaaaa"

有沒有簡單的方法能夠在Javascript中完成此操做? 我顯然可使用函數,可是我想知道是否有任何內置方法或其餘一些巧妙的技術。 es6


#1樓

/**  
 * 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"
);

#2樓

現在, 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


#3樓

若是重複不少,這很方便: 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) )


#4樓

在新的ES6和聲中,您將具備重複執行此操做的本地方法。 ES6如今也僅是實驗性的,此功能在Edge,FF,Chrome和Safari中提供 函數

"abc".repeat(3) // "abcabcabc"

而且確定地,若是重複功能不可用,則可使用老式的Array(n + 1).join("abc") this


#5樓

一種替代方法是: spa

for(var word = ''; word.length < 10; word += 'a'){}

若是您須要重複多個字符,請乘以條件:

for(var word = ''; word.length < 10 * 3; word += 'foo'){}

注意:您沒必要像word = Array(11).join('a')同樣超調1。

相關文章
相關標籤/搜索