filter

这个 filter 过滤器使用箭头函数过滤序列或映射的元素。arrow函数接收序列或映射的值:

1
2
3
4
{% set sizes = [34, 36, 38, 40, 42] %}

{{ sizes|filter(v => v > 38)|join(', ') }}
{# output 40, 42 #}

for 标记,它允许筛选要迭代的项:

1
2
3
4
{% for v in sizes|filter(v => v > 38) -%}
    {{ v }}
{% endfor %}
{# output 40 42 #}

它也适用于映射:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
{% set sizes = {
    xs: 34,
    s:  36,
    m:  38,
    l:  40,
    xl: 42,
} %}

{% for k, v in sizes|filter(v => v > 38) -%}
    {{ k }} = {{ v }}
{% endfor %}
{# output l = 40 xl = 42 #}

arrow函数还接收密钥作为第二个参数:

1
2
3
4
{% for k, v in sizes|filter((v, k) => v > 38 and k != "xl") -%}
    {{ k }} = {{ v }}
{% endfor %}
{# output l = 40 #}

注意arrow函数可以访问当前上下文。

争论

  • array :序列或映射
  • arrow :箭头函数