首页 > 解决方案 > 如何在返回值中添加分隔符,并为分隔符指定默认值?

问题描述

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

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

标签: javascriptstringrepeatdelimiter

解决方案


您的代码非常接近。您可以在循环中添加分隔符,如果未指定默认参数以匹配您想要的结果,则可以包含它:

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的数组,使用 string 的数组s,然后.join使用参数 delimiter 的数组(或者" "如果没有指定分隔符)。

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

推荐阅读