我试图记住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;