Последняя итерация цикла For с условием If с веткой - PullRequest
0 голосов
/ 13 ноября 2018

Так что это только пример того, чего я пытаюсь достичь. Я перебираю все элементы и печатаю только тех, кто начинает с F и разделяет их запятыми. В итоге цикл будет выполнен, например, 15 итераций, но будет напечатано только 5. Я пытаюсь поймать последний, который будет напечатан, так что я могу удалить запятую. Я попытался с фильтром loop.last, но он работает только в том случае, если цикл печатает последний элемент, но если последний отпечаток был раньше, он все еще с запятой.

{% for item in items %}
  {% if item starts with 'F' %}
     {{ item }},
  {% endif %}
{% endfor %}

Я ничего не могу редактировать из предметов. Пожалуйста, помогите, я застрял на этом некоторое время.

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Более простым решением может быть Добавление условия в оператор for и отображение запятой только в том случае, если это не первое взаимодействие (loop.last определяется при использовании условий цикла). Как пример:

{% set items = ['Fitem1', 'item2', 'Fitem3', 'Fitem4', 'item5'] %}

{% for item in items if item starts with 'F'%}

{% if loop.first == false  %},{% endif%}
{{item}}

{% endfor %}

См. эту веточку для рабочих решений

0 голосов
/ 13 ноября 2018

Я проверил это, поэтому подумал, что дам ответ:

{% set items = ['Fitem1', 'item2', 'Fitem3', 'Fitem4', 'item5'] %}
{% set newArray = [] %}
{% for item in items %}
  {% if item starts with 'F' %}
    {% set newArray = newArray|merge([item])  %}
  {% endif %}
{% endfor %}
{{ newArray|join(',') }}
...