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