`

循环数组的逻辑怎么写

 
阅读更多

应用场景这样的:

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;

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

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

分享到:
评论

相关推荐

    队列代码 循环数组 自编的

    ### 队列数据结构与循环数组实现 #### 一、队列基本概念 队列是一种先进先出(First In First Out, FIFO)的数据结构,主要用于处理需要按顺序执行的任务集合。在计算机科学中,队列被广泛应用于操作系统任务调度...

    利用Excel联合数组公式等比例构造一维循环数组.rar

    本压缩包文件“利用Excel联合数组公式等比例构造一维循环数组.rar”聚焦于如何通过MOD函数、COLUMN函数和LOOKUP函数来创建一个等比例的循环数组。下面我们将深入探讨这些知识点: 首先,我们需要理解什么是数组公式...

    循环数组的算法源代码。 这是一个环型数组模版。一般可用做缓冲区的使用.rar

    循环数组是一种特殊的数组数据结构,它在物理存储上与普通一维数组并无区别,但其逻辑上形成一个环形结构,使得数组的最后一个元素之后紧接着第一个元素,这种设计常用于实现高效的数据缓冲机制。在C#编程语言中,...

    c++循环数组ppt资源

    总的来说,循环数组是C++编程中基础且重要的概念,通过while和for语句,我们可以有效地处理数组数据,解决各种计算和逻辑问题。在学习过程中,掌握循环设计的三要素以及while和for语句的区别和联系,对于理解和编写...

    xunhuan.rar_循环数组

    循环数组是一种特殊的数组结构,它在内存中形成一个闭合的环形,使得数组的最后一个元素之后紧跟着第一个元素。这种数据结构在处理循环逻辑或实现特定算法时非常有用,例如在游戏编程中的路径查找、音乐播放列表或者...

    易语言数组比较模块

    这些功能的实现都基于易语言的基础语法和特性,包括数组操作、条件判断、循环结构等。通过这些模块,开发者可以轻松地在自己的易语言程序中实现数组的比较功能,提高代码的复用性和效率。同时,易语言的源码开放性...

    C语言实例循环嵌套数组指针函数结构体

    在C语言编程中,循环、嵌套、数组、指针、函数和结构体是核心概念,它们构成了C语言的强大功能和灵活性。以下是对这些概念的详细解释和实践应用。 一、循环 C语言中的循环主要有三种类型:for循环、while循环和do-...

    循环有序数组查找问题1

    在提供的C#代码中,`binarySearch`函数实现了基本的二分查找逻辑,而`search`函数则是处理循环有序数组特性的部分。`search`函数首先计算中间元素,然后根据`s`, `m`, `e`的关系判断最小值所在的子数组,并据此调整...

    Labview应用技术 数组函数的练习(课堂实训).docx

    2. **程序框图编程**:在程序框图中构建逻辑,包括For循环、随机数生成器、数组函数等,确保它们按预期工作。 3. **分析与总结**:完成实验后,总结所使用的数组函数,例如“创建数组”、“数组大小”、“数组最大值...

    易语言源码易语言汇编读写数组源码.rar

    4. **性能优化**:通过汇编语言优化数组的读写速度,可能涉及循环展开、减少内存访问次数等技术。 5. **混合编程**:学习如何在易语言和汇编之间进行调用,包括函数接口定义、参数传递和返回值处理。 6. **调试技巧*...

    js从数组中删除指定值(不是指定位置)的元素实现代码

    总结一下,通过扩展`Array.prototype`,我们可以为所有数组实例添加新的方法,这样的操作可以避免重复编写相同的逻辑代码,而且可以提高代码的复用性。同时,通过组合使用`indexOf`和`splice`方法,我们可以实现复杂...

    DES加密算法 C实现 二维数组

    在二维数组中模拟位操作可能效率较低,但在理解算法逻辑上十分直观。 在东软等高校的课程中,学生可能被要求使用这种二维数组的方式实现DES,以此锻炼他们对位操作的理解和抽象思维能力。通过这样的实践,可以更好...

    用数组实现一个循环队列

    这个实现中,队头和队尾的指针都是模容量运算的,确保了在循环数组中的正确索引。当队列为空时,队头和队尾指针相同;当队列已满时,队尾加1后等于队头。 通过这样的C++代码,我们可以创建并管理一个循环队列,有效...

    vue forEach循环数组拿到自己想要的数据方法

    Vue也提供了处理数据和事件的方法,其中循环数组是基本但重要的功能之一。本文将详细探讨在Vue中使用`forEach`循环数组来获取所需数据的方法。 首先,Vue中的`v-for`指令是基于JavaScript的数组的`forEach`方法实现...

    Matlab数组循环赋值的三种方法深入解析.pdf

    while循环的结构是`while condition statements end`,其中`condition`是控制循环的逻辑表达式。同样,我们可以用while循环实现上面的例子: ```matlab b = zeros(1, 5); i = 1; while i b(i) = i; i = i + 1; ...

    基于数组的队列

    - **循环数组**:为了充分利用数组空间,采用循环数组的方式管理队列。即当队尾到达数组末尾时,可以继续从数组开头处存放数据。 - **判空与判满**:利用`front`和`rear`指针位置关系来判断队列是否为空或已满。通常...

    利用javascript数组长度循环数组内所有元素

    理解了这段代码的基本逻辑后,我们可以进一步扩展关于JavaScript数组和循环的知识点: 1. **创建数组**:在JavaScript中,可以通过多种方式创建数组,如`new Array()`构造函数或数组字面量语法`[]`。例如: ```...

    基于S7-1200 PLC实现数组某一列上下循环移动的方法研究.pdf

    其编程思路是通过编写循环控制逻辑,使得数组中的数据能够按照指定的方向移动指定的位数,从而实现循环移动的效果。 本文的研究成果为那些在工业自动化领域中需要实现数据循环移动的应用提供了可行的解决方案,同时...

    数组实现循环队列(有bug版)

    ### 数组实现循环队列(有bug版) #### 概述 本文档主要介绍了一种基于数组实现的循环队列的代码实现,并对该代码进行了分析,指出了其中存在的问题及可能的原因。 #### 循环队列简介 循环队列是一种特殊的数据...

Global site tag (gtag.js) - Google Analytics