简体   繁体   中英

Javascript / jQuery function similar to Liquid: cycle

Is there a function in JavaScript/jQuery similar to Liquid cycle as described below?

Loops through a group of strings and outputs them in the order that they were passed as parameters. Each time cycle is called, the next string that was passed as a parameter is output.

Input:

{% cycle 'one', 'two', 'three' %}
{% cycle 'one', 'two', 'three' %}
{% cycle 'one', 'two', 'three' %}
{% cycle 'one', 'two', 'three' %}

Output:

one
two
three
one

I have been trying to look at loop , forEach , do/while but can't get the idea.
Thanks for any suggestion.

You could use a closure,
inside the outer scope you define a variable which keeps track of the index;
while the returned function increments or resets the index, and returns the corresponding item.

Here's an example:

 function cycle(arr) { cycle.i = -1 //return a closure for cycling return function() { cycle.i = cycle.i < arr.length - 1 ? cycle.i + 1 : 0 return arr[cycle.i] } } var it = cycle(['one', 'two', 'three']) setInterval(function() { console.log(it()) }, 500) 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM