1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
``reduce``
==========
The ``reduce`` filter iteratively reduces a sequence or a mapping to a single
value using an arrow function, so as to reduce it to a single value. The arrow
function receives the return value of the previous iteration and the current
value and key of the sequence or mapping:
.. code-block:: twig
{% set numbers = [1, 2, 3] %}
{{ numbers|reduce((carry, v, k) => carry + v * k) }}
{# output 8 #}
The ``reduce`` filter takes an ``initial`` value as a second argument:
.. code-block:: twig
{{ numbers|reduce((carry, v, k) => carry + v * k, 10) }}
{# output 18 #}
Note that the arrow function has access to the current context.
Arguments
---------
* ``arrow``: The arrow function
* ``initial``: The initial value
.. note::
Internally, Twig uses the PHP `array_reduce`_ function.
.. _`array_reduce`: https://www.php.net/array_reduce
|