aSort
Ordena array no proprio array (in-place). Aceita codeblock customizado pra ordenar arrays multidimensionais por coluna.
Assinatura: aSort(aArr, [nIni], [nQtd], [bCmp]) -> aArr
Retorna: Array (mesmo array, ordenado)
aSort ordena um array no proprio lugar (in-place). Aceita codeblock pra ordenar arrays compostos por sub-arrays (ex: {{cod,nome}, {cod,nome}}).
Sintaxe basica (array simples)
aNomes := {"Carlos", "Ana", "Bruno"}
aSort(aNomes)
// aNomes agora = {"Ana", "Bruno", "Carlos"}
Ordenar por coluna (array de arrays)
aDados := { ;
{"002", "Ana"}, ;
{"001", "Carlos"} ;
}
// Ordenar por coluna 1 (codigo)
aSort(aDados, NIL, NIL, {|x,y| x[1] < y[1]})
// Ordenar por coluna 2 (nome)
aSort(aDados, NIL, NIL, {|x,y| x[2] < y[2]})
Pegadinhas
- Modifica o array original — se quiser preservar, faca
aCloneantes. - Codeblock case-sensitive — pra ordem nao-case-sensitive, use
Upper(x[1]) < Upper(y[1]). - Ordem decrescente — inverter operador:
{|x,y| x[1] > y[1]}. - Performance O(n log n) — bom em arrays pequenos/medios; em arrays gigantes (10k+), considere ordenar via SQL.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
aArr | Array | sim | Array a ordenar. |
nIni | Numeric | não | Posicao inicial. Default 1. |
nQtd | Numeric | não | Quantos elementos. Default todos. |
bCmp | CodeBlock | não | Codeblock de comparacao {|x,y| x < y}. |