`

循环数组的逻辑怎么写

 
阅读更多

应用场景这样的:

var imgUrls = [
    '1.jpg',
    '2.jpg',
    '3.jpg',
    '4.jpg'
];

现在想做一个Carousel的插件,要求点击某个按钮的时候可以一直循环看图片:
1.jpg, 2,jpg, 3.jpg, 4.jpg,1.jpg,2.jpg....  如此循环下去,反之亦然。。

 怎么去做数据层面的处理,怎么判断是否到头了?容易想到的办法是:

var currentIndex = 0;
// show next img
if (currentIndex === imgUrls.length - 1) {
    currentIndex = 0;
}
else {
    currentIndex++;
}


// show previous img
if (currentIndex === 0) {
    currentIndex = imgUrls.length - 1;
}
else {
    currentIndex--;
}

 这种写法最直接,逻辑也很清楚,一目了然。不过今天自己在写这段的时候突然脑袋抽了一下,换了一种写法:

var currentIndex = 0;
// show next img
currentIndex = ++currentIndex % imgUrls.length;


// show previous img
currentIndex = (--currentIndex + imgUrls.length) % imgUrls.length;

 相比第一种写法,代码简洁了一些,但逻辑却不那么明显清晰了。

这让我想到了那个什么什么不可兼得。。。

分享到:
评论

相关推荐

    PHP100视频教程 27:PHP模板引擎Smarty入门使用

    1、Smarty介绍及应用的优缺点 Smarty是一个使用...2、Smarty的配置3、Smarty的应用:变量,循环…数组是最常用的方式,可以帮助我们循环列表,和快速访问打理数据,如果要循环数组我们可以使用Smarty内置的方法section

    PHP100视频教程 27:PHP模板引擎Smarty入门使用.rar

    软件介绍 1、Smarty介绍及应用的优缺点  Smarty是一个使用PHP写出来的PHP模板引擎,目的是要...数组是最常用的方式,可以帮助我们循环列表,和快速访问打理数据,如果要循环数组我们可以使用Smarty内置的方法section

    【03-流程控制与数组】

    foreach循环遍历数组和集合元素时,无须获得数组和集合长度,无须根据索引来访问数组元素和集合元素, foreach循环自动遍历数组和集合的每个元素。 •当使用foreach循环来迭代输出数组元素或集合时,通常不要对...

    Apache BSF实例

    使用apache bsf开源项目的一个例子,我也是刚接触到。包含了一些基本的操作。 1.如何调用java方法 2.对调用java方法返回数据进行操作,如循环数组,逻辑判断 本项目用eclipse或myeclipse直接导入即可。

    数组课上习题,练习注解笔记

    数组课上习题,练习注解笔记

    JavaScript实现数组降维详解

    大家都知道将多维数组(尤其是二维数组)转化为一维数组是业务开发中的常用逻辑,除了使用朴素的循环转换以外,我们还可以利用Javascript的语言特性和数据结构的思想实现更为简洁优雅的转换。下面跟着小编一起来学习...

    java员工管理系统初级,只涉及到知识点:类和对象(属性、方法)、类的封装、引用数组(对象数组)、数组的插入、删除 代码有注释

    模拟实现基于文本界面的《员工管理系统》。 该软件能够实现对员工对象的插入、修改和删除(用数组实现),...该初学者阶段则是需要掌握:用循环保证程序的不断运行、方法的调用、字符串处理的常见方法、键盘录入和输出

    C++自学 apk

    1、C++数据类型、控制语句、循环、数组等基础 2、C++逻辑算法练习题 3、C++函数、指针 4、C++内存管理等高级知识 无论您是在校大学生,还是职业学员,或者其他开发人员,本书都志在全面提高您的C++编程思想和...

    基于c++数字逻辑电子仿真器

    采用一个全局数组CArray,CPoint> numpoint来记录结点前序号。 if(Subtype==Input) { //当创建Input时加入点到numpoint数组中 numpoint.Add (CPoint(point.x-15,point.y)); pNode->number =numpoint.GetSize ...

    数据结构的逻辑结构、存储结构及数据运算的含义及其相互关系.doc

    2、 逻辑运算符及其优先级, 逻辑运算符和逻辑表达式。 3、 if语句。 if语句的三种形式, if语句的嵌套, 条件运算符。 4、 switch 语句. 1 、 while 语句。 2、 do/while 语句。 3、 for 语句。 4、 循环的嵌套。 ...

    程序逻辑和C语言实现

    C语言是一种面向过程的编程语言,是所有编程语言的基础,源代码后缀名为.c

    DAFunctor:N维数组函子。 NumPyPyTorch ndarray操作的符号转换器

    逻辑更大的 切片(正步骤) 切片分配(步骤= 1) 数学 添加 减去 乘 火炬 张量(由数据构造) 置换 去做 脾气暴躁的 切片(负步骤) 切片分配(步骤!= 1) 数学 划分 互惠的 指数和对数 三角函数 双曲函数 里纳尔格...

    数据操作工具箱:操作字符串、数组、元胞数组和结构体等数据,以及一个单元测试框架-matlab开发

    常用工具逻辑判断、条件计数、数组选择、笛卡尔积计算等功能。 字符串操作和格式化用于生成不同类型的字符串、格式化字符串、从字符串中提取信息和转换字符串的函数。 元胞阵列操作用于逻辑判断,条件计数,元素...

    JS数组降维–Array.prototype.concat.apply([], arr)

    把多维数组(尤其是二维数组)转化为一维数组是业务开发中的常用逻辑,最近跟着黄轶老师学习Vue2.6.1.1版本源码时,看到源码对二维数组降维的代码,所以这里来写一篇,记录一下,加强印象 Vue源码学习 二维数组降为一维...

    c++学习(apk)

    1、C++数据类型、控制语句、循环、数组等基础 2、C++逻辑算法练习题 3、C++函数、指针 4、C++内存管理等高级知识 无论您是在校大学生,还是职业学员,或者其他开发人员,本书都志在全面提高您的C++编程思想和...

    C++学习安卓版

    1、C++数据类型、控制语句、循环、数组等基础 2、C++逻辑算法练习题 3、C++函数、指针 4、C++内存管理等高级知识 无论您是在校大学生,还是职业学员,或者其他开发人员,本书都志在全面提高您的C++编程思想和...

    C语言笔记-考研版(进阶)

    注意:算术运算符的优先级高于关系运算符、关系运算符的优先级高于逻辑与和逻辑或运算符)、While循环、字符数组、遇到一个问题,scanf通过%s读取字符串时,当遇到空格以后,就会匹配结束,这样没办法把一行带有空格...

    php foreach、while性能比较

    foreach是对数组副本进行操作(通过拷贝数组),而while则通过移动数组内部指标进行操作,一般逻辑下认为,while应该比foreach快(因为foreach在开始执行的时候... } 在循环里进行的是数组“写”操作,则while比forea

    汇编实验报告

    1、练习逻辑运算指令、比较指令和条件转移指令的功能、用法以及与标志位的关系和可用的寻址方式 2、用地址表法,完成下面要求的多分支程序的设计。根据MODE单元中的模式字(0-7)分别转向L0-L7标号处执行。L0-L7处...

Global site tag (gtag.js) - Google Analytics