Javascript:用while循环在给定的count参数中重复一个字符串

Javascript: repeat a string in given a count parameter with a while loop

本文关键字:字符串 一个 参数 count while 循环 Javascript      更新时间:2023-09-26

在问这个问题之前,我做了一个非常彻底的搜索,但我找不到我想要的东西。我想说的是,这是我用JavaScript编写代码的第五天,所以请对我宽容一点!

我正在为一个成熟的程序学习预备编码课程,我们的目标之一是编写一个函数repeatString(string, count),它以字符串和您希望它重复的次数作为参数。这是我的递归版本:

function repeatString(string, count) {
    if ( count === 0 ) {
        return "";
    }
    if ( count === 1 ) {
        return string;
    }
    if ( count > 1 ) {
    return string + repeatString(string, count - 1); 
    }
}

然后我们应该使用while而不是递归来重写函数。这就是我陷入困境的地方:

function repeatString(string, count) {
    var num = 0;
    if ( count === 0 ) {
        return "";
    }
    while ( num < count ) {
        num += 1;
        return string;
    }
}

我当前的代码只返回一次字符串,无论计数是多少,除非计数为零。我确信有一个明显的错误就在我面前,但我的初学者并没有注意到。

试试这个,你需要在返回字符串之前构建它。如果你不使用递归,你只返回一次:

function repeatString(string, count) {
  var num = 0;
  var str = "";
  if ( count === 0 ) {
      return "";
  }
  while ( num < count ) {
      num += 1;
      str = str + string;
  }
  return str;
}

repeatString("asdf",2)

"asdfasdf"

这里有一个简单的例子:

function repeatString(string, count) {
    return new Array(count + 1).join(string);
}
repeatString('asd', 2) // "asdasd"

这里也有一个,带有es6

var repeater = (str) => {
       return (times) => {
            return [...Array(times)].reduce((p,c) => {
              return p.concat(str)
            }, []).join('')
       }
}
repeater('yoyo')(10)
or
  var R = repeater('test')
      R(5)

如何在JavaScript中重复字符串?提供了两种优雅的解决方案,都基于初始化所需大小的数组,然后连接其项以形成结果字符串。

如果必须使用while,那么您仍然可以使函数更短。注意,使用保留字来命名变量的风格很差,所以为了清楚起见,我将"string"替换为"s",将"str"替换为"result"。

function repeatString(s, count) {
  var result = "";
  var num = 1;
  while ( num++ <= count ) {
      result += s;
  }
  return result;
}

最短答案:

function repeatString(str,num){
   return str.repeat(num);
}
repeatString('hello', 2);