You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Array()方法实现字符串重复时输出不符合预期的问题

问题:字符串重复函数输出不符合预期

调用repeatStringNumTimes("abc", 3)时,预期输出"abcabcabc",但实际输出"abcabc"。疑惑为何指定Array(3)时,字符串没有被拼接3次,反而只得到2次重复的结果?

代码如下:

function repeatStringNumTimes(str, num) {
  if (num <0) {
    return ""
  } else {
  return Array(num+1).join(str)
  }
}

console.log(repeatStringNumTimes("abc", 3));

解答

核心原因是Array(n).join(str)的工作逻辑:join方法会在数组的每两个元素之间插入分隔符。也就是说,长度为n的数组,调用join(str)后会生成n-1次str的拼接结果。

举个例子:

  • Array(3).join("abc"):数组有3个空元素,元素间有2个间隔,因此输出abcabc(2次重复)
  • Array(4).join("abc"):数组有4个空元素,元素间有3个间隔,因此输出abcabcabc(3次重复)

你代码里写的是Array(num+1).join(str),按道理传入num=3时应该得到正确结果,但实际输出abcabc,大概率是代码执行时用的是Array(num).join(str)(也就是没加1),导致少了一次重复。

另外,现在JavaScript有原生的字符串重复方法String.prototype.repeat(),用它实现更简洁直观:

function repeatStringNumTimes(str, num) {
  return num > 0 ? str.repeat(num) : "";
}

当num为正数时直接返回重复后的字符串,负数则返回空字符串,完全符合需求。

内容的提问来源于stack exchange,提问作者Wattlebird

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 23:55:26