协慌网

登录 贡献 社区

在 JavaScript 中多次重复一个字符串

在 Perl 中,我可以使用以下语法多次重复一个字符:

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

有没有一种简单的方法可以在 Javascript 中完成此操作?我显然可以使用一个函数,但是我想知道是否有任何内置方法或其他一些巧妙的技术。

答案

如今, repeat字符串方法几乎在任何地方都可以实现。 (它不在 Internet Explorer 中。)因此,除非需要支持较旧的浏览器,否则只需编写以下内容:

"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 循环附加(虽然不太简洁)多次重复字符是更快的。

在新的 ES6 和声中,您将具有重复执行此操作的本地方法。 ES6 现在也仅是实验性的,此功能在 Edge,FF,Chrome 和 Safari 中提供

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

并且可以肯定的是,如果没有重复功能,则可以使用老式的Array(n + 1).join("abc")

如果您重复很多次,很方便:

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)  )