如何按值对树枝数组进行分组?

How can I group a twig array by value?

这是我的树枝代码:

{% for page in output.pages %}
<li>{{page.name}}</li> <li>{{page.menu}}</li>
{% endfor %}

输出为

green colors
blue colors
yellow colors
orange colors
magenta colors
frog animals
elephant animals

我尝试将其分组到菜单元素中。我需要的结果是:

colors
   green
   blue
   yellow
   orange
   magenta
animals
   frog
   elephant

这是我的方法:

    {% for page in output.pages %}
      {% for menu in page.menu %}
       <ul>{{menu}}</ul>
        <li>{{page.name}}</li>
      {% endfor %}
    {% endfor %}

但它没有按菜单对页面进行分组。

您可以尝试这样的操作:

{% set ul = '' %}
{% for page in pages|sort((a, b) => a.menu <=> b.menu) %}
    {% if ul == '' %} <ul> {% endif %}
    {% if ul != page.menu %} 
        {% if ul != '' %} </ul></li> {% endif %}
        {% set ul = page.menu %} 
        <li>{{ page.menu }}<ul>
    {% endif %}
    <li>{{page.name}}</li>
{% endfor %}
{% if ul != '' %} </ul></li></ul> {% endif %}

twigfiddle