我遇到的问题是,我需要更改此代码,以便在返回值中添加定界符,并为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/