博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

轮播图数组的上下边界的免判断溢出

Posted on 2021-08-31 11:05  kpi311  阅读(53)  评论(0编辑  收藏  举报

1 起因

做轮播图偶然想到了。记录一下以后备用。应该可以适用于所有需要上溢/下溢的场景。

2 描述

一般轮播图都会有个[0,arr.length-1]的遍历范围,到了边界之后,有一些处理方法。

一种比较常见的是到了边界之后就不再增加/减少。另一种是到了边界之后,从另外一个边界出发,有点上溢/下溢的意思。

边界处理代码写if处理不是不好,我只是感觉有点冗余了,所以思考有没有好办法少写点代码。想了想还真有!

2.1 名词定义

curr:当前索引

len:数组长度

2.2 代码案例

这里取步长为1的情况,其他情况类推即可。

步长为+1时,利用取余运算实现上溢效果:

curr = (curr + 1) % len

步长为-1时,利用边界(0)和逻辑或运算实现下溢效果:

curr = (curr || len) - 1

这样就能免判断实现上溢/下溢的效果。

3 总结

只要能够把集合映射到[0,len],就能利用取余和布尔值的隐式转型实现上溢/下溢效果。