在JavaScript中实现类似于1、2、3、1、2、3的数字模式

3
我一直在尝试创建一个函数,该函数可以在 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 应该再次给我 1。
以下是我使用的函数:

function patternItem(x, lastNum) {
  return (x % lastNum);
}

console.clear();
for (var i = 1; i <= 10; ++i) {
  console.log(patternItem(i, 5));
}

我想在不迫使每个余数为0时都为5的情况下解决这个问题。换句话说,我想避免编写类似于以下代码的函数:

function patternItem(x, lastNum) {
  let rem = x % lastNum;
  return rem != 0 ? rem : lastNum;
}

目前为止,我还没有什么运气。对于这个函数,我需要什么样的复杂公式?

3个回答

3

稍微更改您的代码

  1. 将变量i的初始值更改为0,并将条件更改为<而不是<=
  2. 更新函数返回语句为return x % lastNum + 1,以在余数为0时返回1

function patternItem(x, lastNum) {
  return x % lastNum + 1;
}

console.clear();
for (var i = 0; i < 10; ++i) {
  console.log(patternItem(i, 5));
}


1

从0开始,每次加1:

function patternItem(x, lastNum) {
  return x % lastNum;
}
for (var i = 0; i < 10; ++i) {
  console.log(patternItem(i, 5) + 1);
}


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接