我一直在尝试创建一个函数,如果在for
循环中使用,会导致重复的数字集。如果我使用数字1-5,我应该在控制台中看到1,2,3,4,5,1,2,3,4,5的模式。
为此,我首先找到将当前间隔除以集合(5)中的最大数字的余数。例如:
1%5给我1,
2%5 = 2,
3%5 = 3,
4%5 = 4,
5%5 = 0,
和6%5应该再给我一次。
这是我使用的功能:
function patternItem(x, lastNum) {
return (x % lastNum);
}
console.clear();
for (var i = 1; i <= 10; ++i) {
console.log(patternItem(i, 5));
}
&#13;
我试图这样做,而不必为0的每个余数强制5。换句话说,我想避免编写这样或类似的函数:
function patternItem(x, lastNum) {
let rem = x % lastNum;
return rem != 0 ? rem : lastNum;
}
到目前为止,我没有运气。我需要什么样的复杂公式?
答案 0 :(得分:2)
代码略有不同
i
的初始值更改为0,将条件更改为<
而不是<=
。return x % lastNum + 1
,以便在提醒为1
时返回0
。
function patternItem(x, lastNum) {
return x % lastNum + 1;
}
console.clear();
for (var i = 0; i < 10; ++i) {
console.log(patternItem(i, 5));
}
答案 1 :(得分:1)
从0开始并添加1:
function patternItem(x, lastNum) {
return x % lastNum;
}
for (var i = 0; i < 10; ++i) {
console.log(patternItem(i, 5) + 1);
}
答案 2 :(得分:0)
好的,我不知道您希望功能签名是什么,但这是一个应该有效的示例功能:
function pattern(highestNumber, repeatTimes) {
for (var i=0; i<repeatTimes*highestNumber; i++) {
console.log(i % highestNumber + 1);
}
}
现在
> pattern(5, 3);
1
2
3
4
5
1
2
// continues printing 1, 2, 3, 4, 5 until the sequence has been printed 3 times