如何在str中打印数字并重复直到达到长度目标, 例如:
如果我们有num = 4
,而我们打印的str target
是123
,
因此newStr
=应该为1231
,如果num = 6
为newStr = 123123
newStr.length
应该像num
function repeatIt(num) {
var arr = [],
markIt = true,
add = true,
hastag = true;
while (arr.length < num) {
var pushThis = "";
if (markIt) {
pushThis = "!";
markIt = false;
} else if (add) {
pushThis = "@";
add = false;
hastag = true;
} else if (hastag) {
pushThis = "#";
hastag = false;
markIt = true;
add = true;
};
arr.push(pushThis)
};
return num > 0 ? arr : "invalid input"
};
console.log(repeatIt(3))
// output : ['!','@','#'] 123
console.log(repeatIt(6));
// output : ['!','@','#','!','@','#'] 123 123
console.log(repeatIt(4))
// output : ['!','@','#','!'] 123 1
console.log(repeatIt(0)) // invalid input
以上是我的示例,这是我的代码,我检查并更改了参数,它与所需的输出匹配,但是我的代码似乎不干净且时间太长,有什么办法可以为此编写更好的代码上面的例子,??
答案 0 :(得分:1)
您可以使用一个字符数组,然后使用Array.from
构造该数组,然后检查i % chars.length
以获取正确的字符:
function repeatIt(length) {
if (length === 0) return "invalid input";
const chars = ['!', '@', '#'];
return Array.from(
{ length },
(_, i) => chars[i % chars.length]
)
}
console.log(repeatIt(3))
// output : ['!','@','#'] 123
console.log(repeatIt(6));
// output : ['!','@','#','!','@','#'] 123 123
console.log(repeatIt(4))
// output : ['!','@','#','!'] 123 1
console.log(repeatIt(0)) // invalid input
答案 1 :(得分:1)
您的函数实际上应该有两个参数:原始字符串和目标长度。
它看起来像这样:
function repeatIt(str, num) {
while (str.length < num) {
str += str; // double the length
}
return str.slice(0, num); // chop off
}
console.log(repeatIt("!@#", 8));
如果允许您使用内置的.repeat()
方法,则:
function repeatIt(str, num) {
return str.repeat(Math.ceil(num / str.length)).slice(0, num);
}
console.log(repeatIt("!@#", 8));
如果输入和/或输出需要为字符数组,则只需应用.split("")
即可将字符串转换为数组,并应用.join("")
即可将数组转换为字符串。
答案 2 :(得分:0)
如果我正确理解了您的问题,则可以使用%
模运算符来简化此操作,如下所示:
function repeatIt(num) {
if(num <= 0) return;
// The dictionary and result arrays used to generate result
const dict = ['!','@','#'];
const result = [];
// Iterate over the number range provide
for(var i = 0; i < num; i++) {
// For each iteration, add item from dict
// that is current iteration, modulo the length
// of characters in the dictionary
result.push( dict[i % dict.length] );
}
return result;
}
console.log(repeatIt(0));
console.log(repeatIt(3));
console.log(repeatIt(4));
console.log(repeatIt(5));
console.log(repeatIt(10));