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" }}