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.