Olá,
É possível implementar essas operações utilizando um Function: Node, porém considerando cenários em que existam muitos items na lista de objetos é mais recomendado utilizar os blocos padrões da plataforma.
E essa implementação pode ser resolvida basicamente utilizando 3 blocos, conforme workflow em anexo. E os passos são os seguintes:
1°) É utilizado a operação Group By do bloco de Array, em que os items são agrupados pela propriedade “date”. Isso irá agrupar todos os items da lista que possuirem a data igual. Retornando isso em dates
:
{
"2024-01": [
{
"date": "2024-01",
"value": 28.7
},
{
"date": "2024-01",
"value": 30.7
},
{
"date": "2024-01",
"value": 28.5
}
],
"2024-02": [
{
"date": "2024-02",
"value": 28.5
},
{
"date": "2024-02",
"value": 27.8
}
]
}
2°) É executado um loop para o objeto retornado no primeiro passo dates
, e esse loop irá iterar uma vez para cada data, ou seja, irá executar duas vezes nesse caso, uma para “2024-01” e outra para “2024-02”;
3º) Por fim, dentro do loop, é utilizada a operação Sort By do bloco Array, fazendo a ordenação pela propriedade “value” de forma descendente (do maior para o menor).
E como saída do loop, é utilizada somente a primeira posição da operação de ordenação (output.[0]
), ou seja, o item com o maior valor.
E assim como resultado, será obtido uma lista com o maior valor para cada data:
[
{
"date": "2024-01",
"value": 30.7
},
{
"date": "2024-02",
"value": 28.5
}
]
Lembrando que existem outras possibilidades de implementar essa lógica, essa é somente uma das opções.
Assim, espero ter auxiliado a resolver sua dúvida.
array_sort_by_date_value.zip (1,0,KB)