我试图记住Javascript中的“发条算法”,这是我很久以前在有关幻灯片/轮播的教程中阅读的。 (术语可能是错误的,因为我在Google中找不到任何有用的东西)

这是以下代码的简写:

a = a + 1;
if (a > total) a = 0;


从本质上讲,它一直递增直到达到总数,当达到总数时,它将重置为0。这主要用于创建轮播,该轮播可以无限滚动,因为它始终会滚动回到开头(索引0)。

有人使用上述发条算法将上述两行代码写成一行吗?我认为它使用了“余数”运算符%,但我不记得很多。

最佳答案

这称为modular arithmetic,并有效地用于时钟:


  12小时制是一种常见的模块化算术用法,其中
  一天分为两个12小时时段。如果现在是7:00,
  然后8小时后将是3:00。通常添加会提示
  以后的时间应该是7 + 8 = 15,但这不是答案
  因为时钟时间每12小时就会“回绕”


在JavaScript中,您可以使用modulo operations进行% operator


  %运算符从隐式产生其剩余的操作数
  师;左边的操作数是除数,右边的操作数是
  除数。


一些等效的示例:

a = (a+1) % total;


a = ++a % total;


++a, a %= total;

09-15 20:00