Перейти к основному содержимому

Фильтры: массивы и коллекции

Фильтры​

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 #}