Фильтры: массивы и коллекции
Фильтры
length
Длина строки или размер коллекции:
length
{{ 'hello'|length }}
{# 5 #}
{{ users|length }}
first / last
Первый или последний элемент:
first / last
{{ [1, 2, 3]|first }}
{# 1 #}
{{ [1, 2, 3]|last }}
{# 3 #}
{{ 'hello'|first }}
{# h #}
keys
Ключи массива:
keys
{% for key in data|keys %}
{{ key }}
{% endfor %}
join
Объединяет элементы массива в строку:
join
{{ ['a', 'b', 'c']|join(', ') }}
{# a, b, c #}
{{ users|map(u => u.name)|join(', ') }}
merge
Объединяет массивы или хеши:
merge
{% set combined = [1, 2]|merge([3, 4]) %}
{# [1, 2, 3, 4] #}
{% set config = defaults|merge({debug: true}) %}
batch
Разбивает массив на группы:
batch
{% for row in items|batch(3) %}
<div class="row">
{% for item in row %}
<div class="col">{{ item }}</div>
{% endfor %}
</div>
{% endfor %}
{% for row in items|batch(3, 'пусто') %}
column
Извлекает столбец из массива:
column
{{ users|column('name') }}
{# ['John', 'Jane', 'Bob'] #}
{{ users|column('name', 'id') }}
{# {1: 'John', 2: 'Jane', 3: 'Bob'} #}
filter
Фильтрует элементы массива:
filter
{{ numbers|filter(n => n > 3) }}
{{ users|filter(u => u.active) }}
find
Находит первый элемент, соответствующий условию:
find
{{ users|find(u => u.name == 'John') }}
map
Преобразует каждый элемент:
map
{{ users|map(u => u.name) }}
{# ['John', 'Jane'] #}
{{ numbers|map(n => n * 2) }}
reduce
Сворачивает массив в одно значение:
reduce
{{ [1, 2, 3, 4]|reduce((carry, item) => carry + item, 0) }}
{# 10 #}
sort
Сортирует массив:
sort
{{ [3, 1, 2]|sort }}
{# [1, 2, 3] #}
{{ users|sort((a, b) => a.name <=> b.name) }}
reverse
Переворачивает массив или строку:
reverse
{{ [1, 2, 3]|reverse }}
{# [3, 2, 1] #}
{{ 'hello'|reverse }}
{# olleh #}
shuffle
Перемешивает массив случайным образом:
shuffle
{{ [1, 2, 3, 4, 5]|shuffle }}
slice
Извлекает часть массива или строки:
slice
{{ [1, 2, 3, 4, 5]|slice(1, 3) }}
{# [2, 3, 4] #}
{{ 'hello'|slice(0, 3) }}
{# hel #}