如何按值对树枝数组进行分组?
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 %}
这是我的树枝代码:
{% 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 %}