Функция Javascript / jQuery похожа на Liquid: цикл - PullRequest
0 голосов
/ 03 июня 2018

Есть ли в JavaScript / jQuery функция, аналогичная Liquid цикл , как описано ниже?

Перебирает группу строк и выводит их в том порядке, в котором они были переданы в качестве параметров.При каждом вызове временного цикла выводится следующая строка, переданная в качестве параметра.

Ввод:

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

Вывод:

one
two
three
one

Я пыталсяпосмотреть на loop, forEach, do/while, но не могу понять.
Спасибо за любое предложение.

1 Ответ

0 голосов
/ 03 июня 2018

Вы можете использовать замыкание,
внутри внешней области видимости, вы определяете переменную, которая отслеживает индекс;
, в то время как возвращаемая функция увеличивает или сбрасывает индекс и возвращает соответствующий элемент.

Вот пример:

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)
...