javascript - 如何在返回值中添加分隔符,并为分隔符指定默认值?
问题描述
我遇到的问题是,我需要更改此代码以便为返回的值添加分隔符,并为分隔符提供默认值。我尝试了一些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
解决方案
您的代码非常接近。您可以在循环中添加分隔符,如果未指定默认参数以匹配您想要的结果,则可以包含它:
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)
;
推荐阅读
- c++ - 与 nana 构建 hello world
- c - E Balaguruswamy 书第 1 章主题子例程第 3 版中的 C 代码错误
- vue.js - 结果Vue GraphQL上缺少电影属性
- python - 使用正则表达式添加前导零
- php - 继续检查数组中的值是否为数组
- mongodb - Morphia - 将单个集合数据映射到多个 pojo
- rest - 有什么方法可以从 Swagger 文件中为我的操作生成 URL?
- python - 将字符串(2018 年 12 月)转换为日期时间
- java - 如何通过反射找到带有特定注释的字段?
- ios - 使用结构在 Swift 5 中使用 JSONDecoder 解析 JSON