在JavaScript中实现数字模式,如1,2,3,1,2,3

时间:2016-09-06 18:57:21

标签: javascript for-loop

我一直在尝试创建一个函数,如果在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;
&#13;
&#13;

我试图这样做,而不必为0的每个余数强制5。换句话说,我想避免编写这样或类似的函数:

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

到目前为止,我没有运气。我需要什么样的复杂公式?

3 个答案:

答案 0 :(得分:2)

代码略有不同

  1. i的初始值更改为0,将条件更改为<而不是<=
  2. 将函数return语句更新为return x % lastNum + 1,以便在提醒为1时返回0
  3. 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