我遇到的问题是,我需要更改此代码,以便在返回值中添加定界符,并为delimter提供默认值。
我尝试了一些if,但是非常不必要,让自己非常困惑。

var stringRepeater = function (string, times, delimiter) {
var repeatedString = string;

for (var i = 1; i < times; i++) {
 repeatedString += string;
  }
return repeatedString;
}


=================如果正常工作将是输出=================

console.log(stringRepeater("hi", 3, ",") === "hi,hi,hi");
// -> true
console.log(stringRepeater("hi", 3) === "hi hi hi");
// -> true

最佳答案

您的代码非常接近。您可以在循环内添加定界符,如果未指定默认参数以匹配所需结果,则可以包含默认参数:



var stringRepeater = function (string, times, delimiter=" ") {
  //                                                   ^^^^
  var repeatedString = string;

  for (var i = 1; i < times; i++) {
    repeatedString += delimiter + string;
    //                ^^^^^^^^^^^^
  }

  return repeatedString;
};

console.log(stringRepeater("hi", 3, ",") === "hi,hi,hi");
console.log(stringRepeater("hi", 3) === "hi hi hi");





times < 1时注意边缘情况-您仍然会重复一次。您可以根据需要抛出异常或返回空字符串。

或者,您可以使用Array构造函数来构建某个长度的数组,使用.fill具有字符串s的数组,然后使用参数定界符(如果未指定定界符,则使用.join来构建" "数组) )。

const stringRepeater = (s, times, delim=" ") =>
  Array(times).fill(s).join(delim)
;


另一个值得了解的类似功能是String#repeat,它几乎可以完成您想要的操作,但并不是完全如此,因为它有一个悬挂的定界符,因此您必须slice将其关闭:

const stringRepeater = (s, times, delim=" ") =>
  (s + delim).repeat(times).slice(0, -delim.length)
;

关于javascript - 如何在返回值中添加定界符,并为定界符赋予默认值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57422122/

10-12 20:13