Looplex Knowledge Base

GroupBy

O tube groupBy recebe um vetor do tipo Struct e agrupa os elementos deste vetor de acordo com algum de seus fields.

Formato:

|vect|.groupBy("fieldAlias")

Parâmetros:

  • vect: Vetor do tipo objeto a ser agrupado.
  • fieldAlias: Alias do field interno a ser usado como chave de agrupamento.

Retorno:

Um vetor de Struct. Essa struct tem dois fields específicos: uma String [key] que guarda o valor do field agrupador e um vetor de estrutura |values|, cuja estrutura corresponde à estrutura do vetor inicial.

Exemplos:

Neste exemplo, declaramos uma estrutura STR_Parte, que é usada por um vetor de estrutura de qualificação das partes. Em seguida, atribuímos o retorno do groupBy a um vetor oculto |vetorAgrupado|. Dessa forma, o template realiza o print das partes agrupadas por Estado de domicílio.

Note que o |vetorAgrupado| tem fields específicos: uma String [key] e um vetor de objetos |values| que deve utilizar a mesma estrutura do vetor sendo passado como argumento do tube groupBy.

declarations {
struct[STR_Parte] {
name = "Partes"
fields {
+[nome] : String {
name = "Nome"
},
+[uf] : List[*Uf] {
name = "Estado de domicílio"
atomic = true
}
}
},
+|vectPartes| : Vector[STR_Parte],
-|vetorAgrupado| : Vector[Struct] {
fields {
+[key]:String,
+|values| : Vector[STR_Parte]
}
}
}
operations {
|vetorAgrupado| = |vectPartes|.groupBy("uf"),
foreach(<i> IN |vetorAgrupado|) {
foreach(<j> IN |i.values|) {
print "Nome: " & <j.nome> & "\b",
print "Uf: " & <j.uf> & "\b\b"
}
}
}
Edit this page on GitHub