Sintaxis
ASORT( <array>, [ <expresión numérica 1> ]
[ , <expresión numérica 2> ]
[ , <bloque de código> ] )
Propósito
Ordena los elementos de un array.
Argumentos
< array >
Define el nombre del array cuyos elementos se ordenarán.
< expresión numérica 1 >
Define el número del primer elemento a participar del orden. Si se omite, se asumirá el primer elemento del array.
< expresión numérica 2 >
Define la cantidad de elementos que participarán del orden, contados a partir del elemento definido por la expresión numérica 1. Si se omite, se ordenarán todos los elementos del array, a partir del elemento definido por la expresión numérica 1.
< bloque de código >
Define un bloque de código para especificar el orden en el cual se realizará el orden. Si no se especifica, se asumirá el orden ascendente. Es decir, los elementos con los menores valores se colocan en los primeros elementos del array.
Utilización
La función ASORT() es un medio simple y rápido de ordenar los elementos de un array.
Todos los elementos del array que se ordenarán deben obligatoriamente pertenecer al mismo tipo de datos. No podrán mezclarse tipos diferentes de datos para realizar el orden.
Sugerencias
Como los arrays multidimensionales se implementan en el AdvPL como subarrays intercalados, es decir, arrays que contienen otros subarrays, la función ASORT() no ordena directamente un array multidimensional. Para ello, debe suministrarse un bloque de código que contenga las instrucciones necesarias para ordenar el array.
Ejemplos
Este ejemplo crea dos array de 5 elementos, los ordena de forma ascendente y después en orden descendente utilizando bloques de código:
LOCAL aVetor := { “A”, “D”, “C”, “B” }
LOCAL aArray := { 3, 5, 1, 2, 4 }
ASORT(aVetor) // Resulta: { “A”, “B”, “C”, “D” }
ASORT(aVetor,,, { |x, y| x > y } ) // Resulta: { “D”, “C”, “B”, “A” }
ASORT(aArray) // Resulta: { 1, 2, 3, 4, 5 }
ASORT(aArray,,, { |x, y| x > y } ) // Resulta: { 5, 4, 3, 2, 1 }
Este ejemplo ordena el segundo elemento de un array de dos dimensiones:
LOCAL aIndice := { { “Fipe”, 9.3 }, { “IPC”, 8.7 }, { “DIEESE”, 12.3 } }
ASORT(aIndice, , , { | x,y | x[2] > y[2] } )
// Con base en el orden anterior, el orden queda de la siguiente manera:
// DIEESE 12.3
// Fipe 9.3
// IPC 8.7