JavaScript 中 String 类型里字符串重复的方法实现

作者:袖梨 2026-07-16
JavaScript中实现字符串重复最直接的方式是使用ES6引入的String.prototype.repeat()方法,它接受非负整数参数返回重复后的新字符串;不支持时可用Array(n+1).join(str)或循环拼接兼容旧环境。

JavaScript 中实现字符串重复,最直接的方式是使用原生的 String.prototype.repeat() 方法,它简洁、高效且语义清晰。

使用原生 repeat() 方法(推荐)

ES6 引入了 repeat(),接受一个非负整数参数,返回将原字符串重复指定次数后的新字符串:

  • "a".repeat(3)"aaa"
  • "hi ".repeat(2)"hi hi "
  • "x".repeat(0)""(空字符串)
  • 传入负数、NaN 或大于 2^31−1 的值会抛出 RangeError

兼容旧环境的手动实现(如 IE)

若需支持不支持 repeat() 的老版本浏览器(如 IE),可自行封装一个 polyfill 或工具函数:

  • 用空字符串初始化结果,循环拼接
  • 或利用数组技巧:Array(n + 1).join(str)(注意:当 n === 0 时,Array(1).join(str) 返回空字符串,符合预期)
  • 更健壮的写法(处理边界和类型):
function repeat(str, count) {  if (typeof str !== 'string') str = String(str);  count = Math.floor(Number(count));  if (count < 0 || !isFinite(count)) return '';  return Array(count + 1).join(str);}

注意点与常见误区

重复操作看似简单,但容易忽略几个关键细节:

立即学习“Java免费学习笔记(深入)”;

  • repeat() 不修改原字符串,始终返回新字符串(字符串在 JS 中不可变)
  • 传入小数会被自动向下取整,例如 "x".repeat(2.9) 等价于 "x".repeat(2)
  • 大量重复(如百万次)可能导致内存溢出或性能问题,应结合业务场景评估合理性
  • 不要用 for 循环反复 += 拼接长字符串,V8 等引擎虽已优化,但数组 joinrepeat 仍更可靠

相关文章

精彩推荐