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判断在伯仲之间,应用场景因地制宜。

posted @ 2016-05-18 10:52  极·简  Views(500)  Comments(0Edit  收藏  举报