js无限轮播算法中干掉if判断

Posted 随记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js无限轮播算法中干掉if判断相关的知识,希望对你有一定的参考价值。

无限轮播在网页应用中经常见到,这其中算法各有千秋,在学习算法分析一书中发现自增取余方法可以干掉一些不必要的if判断,具体代码如下:

 1 var arr= [1,2,3,4,5,6,7,8];
 2 var index=0;
 3 var length=arr.length;
 4 setInterval(function(){
 5   // 自增
 6   console.log(arr[index++%length]);
 7   // 自减
 8   // console.log(arr[index=(index+length-1)%length]);
 9 }, 1000);
10 /*
11 //性能测试
12 console.time("start");
13 for (var i = 0; i < 50000; i++) {
14   arr[index++%length];
15 };
16 console.timeEnd("start"); //60ms左右
17 console.time("start");
18 for (var i = 0; i < 50000; i++) {
19   if(++index>=length){
20     index=0;
21   }
22   arr[index];
23 };
24 console.timeEnd("start"); //60ms左右*/

从性能测试以及算法复杂度来看,跟if判断在伯仲之间,应用场景因地制宜。

以上是关于js无限轮播算法中干掉if判断的主要内容,如果未能解决你的问题,请参考以下文章

还在写大量 if 来判断?一个规则执行器干掉项目中所有的 if 判断...

无限轮播

如何制作一个无限的 JS 轮播(无穷大问题)

使用jquery的无限响应轮播/滑块

使用策略模式+工厂模式干掉代码中过多的if-else

使用策略模式+工厂模式干掉代码中过多的if-else