Agrupamento com group
Durante a implementação de um template padrão para o Storefront foi identificada a necessidade de otimizar a construção de alguns componentes. Uma abordagem identificada foi a implementação de uma função de agrupamento.
O Storefront tem implementado um recurso de agrupamento de objetos, semelhante a um hashmap, ou um dicionário do javascript. O grupo é composto essencialmente de uma chave e uma lista correspondente de objetos.
O agrupamento atualmente funciona com valores de texto e numéricos, permitindo também valores nulos para a chave.
Funcionamento
Quando quiser agrupar objetos por campos específicos, chame a função group.by
passando um array de objetos, e defina qual o campo dos objetos será utilizado para criar as chaves (e assim os grupos).
Quando quiser acessar os grupos criados a partir da chave de agrupamento, chame a função group.get
Exemplo de objeto:
{
"lista": [
{
"produtoId": 10,
"categoria": "Relógios"
},
{
"produtoId": 11,
"categoria": "Acessórios"
},
{
"produtoId": 40,
"categoria": "Blusas"
},
{
"produtoId": 41,
"categoria": "Tênis"
},
{
"produtoId": 42,
"categoria": "Blusas"
},
{
"produtoId": 45,
"categoria": "Relógios"
}
]
}
Para realizar o agrupamento, podemos usar a seguinte sintaxe:
{{ grupos = lista | group.by @(do; ret $0.categoria; end) }}
Para acessar a lista de objetos agrupados por um campo, use a seguinte sintaxe
{{ relogios = grupos | group.get "Relógios" }}
Updated 12 months ago