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

 var arr= [1,2,3,4,5,6,7,8];
var index=0;
var length=arr.length;
setInterval(function(){
// 自增
console.log(arr[index++%length]);
// 自减
// console.log(arr[index=(index+length-1)%length]);
}, 1000);
/*
//性能测试
console.time("start");
for (var i = 0; i < 50000; i++) {
arr[index++%length];
};
console.timeEnd("start"); //60ms左右
console.time("start");
for (var i = 0; i < 50000; i++) {
if(++index>=length){
index=0;
}
arr[index];
};
console.timeEnd("start"); //60ms左右*/

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

最新文章

  1. hibrenate @ManyToOne(fetch = FetchType.EAGER) 和 lazy 区别
  2. ecshop怎么添加配送方式
  3. 编写简单的C/S聊天程序
  4. struts调用的几种方法
  5. Myisam and InnoDB
  6. win 10应用商店下载应用错误码0x80070422
  7. open和fopen的区别(转)
  8. web文档类型DOCTYPE html很重要
  9. Syslog4j如何实现接收日志
  10. LNMP之Nginx
  11. 查看SQL Server服务运行帐户和SQL Server的所有注册表项
  12. AWT的应用
  13. 在虚拟机上运行zookeeper的过程中,xshell连接不上虚拟机
  14. UVa LA 3213 - Ancient Cipher 水题 难度: 0
  15. 人类及其他物种基因组DNA之问
  16. PCA (主成分分析)详解 (写给初学者) 结合matlab(转载)
  17. asp.net获取当前网址url
  18. Codeforces 454D - Little Pony and Harmony Chest
  19. 20135319zl内核模块编译报告
  20. luoguP4735 最大异或和

热门文章

  1. 高并发场景下System.currentTimeMillis()的性能问题的优化
  2. 将 C++/WinRT 中的线程切换体验带到 C# 中来(WPF 版本)
  3. 【解决方案】文件上具有 Web 标记,请删除 Web 标记
  4. 解决C#调用COM组件异常来自 HRESULT:0x80010105 (RPC_E_SERVERFAULT)的错误
  5. go install -v github.com/gopherjs/gopherjs报错提示go cannot find package &quot;golang.org/x/crypto/ssh/terminal&quot; 解决方案
  6. in __init__ self._traceback = tf_stack.extract_stack()的一个原因
  7. sense chrome扩展工具安装问题
  8. Spring AOP无法拦截Controller的原因
  9. Weak Session IDs
  10. 关于ABViewer的疑问解答