Este es el sitio web histórico de la documentación de 4D. La documentación se está trasladando progresivamente a developer.4d.com

Inicio

 
4D v19.8
collection.orderBy( )

collection.orderBy( ) 


 

collection.orderBy ( {criterio} ) -> Resultado 
Parámetro Tipo   Descripción
criterio  Texto, Collection, Entero largo in Texto: ruta(s) de propiedad(es) para ordenar la colección
Colección: colección de objetos de criterio
Entero largo: ck ascending o ck descending (valores escalares)
Resultado  Collection in Copia ordenada de la colección (copia superficial)

El método collection.orderBy( ) devuelve una nueva colección que contiene todos los elementos de la colección en el orden especificado por criterio.

Este método devuelve una copia superficial, lo que significa que los objetos o colecciones en ambas colecciones comparten la misma referencia. Si la colección original es una colección compartida, la colección devuelta también es una colección compartida.

Nota: este método no modifica la colección original.

Si omite el parámetro criterio, el método ordena los valores escalares en la colección en orden ascendente (otros tipos de elementos como objetos o colecciones se devuelven desordenados). Puede modificar este orden automático pasando las constantes ck ascending o ck descending en el parámetro criterio (ver abajo).

También puede pasar un parámetro criterio para definir cómo deben ordenarse los elementos de la colección. Tres sintaxis son compatibles para este parámetro:

  • criterio es del tipo texto (fórmula): "rutaPropiedad1 {desc o asc}, rutaPropiedad2 {desc o asc}, ..." (orden por defecto: asc)
    En este caso, criterio contiene una fórmula formada de 1 a x rutas de propiedad y (opcionalmente) órdenes de clasificación, separados por comas. El orden en que se pasan las propiedades determina la prioridad de clasificación de los elementos de la colección.
    Por defecto, las propiedades se ordenan en orden ascendente. Puede establecer el orden de clasificación de una propiedad en la cadena de criterios, separada de la ruta de la propiedad por un espacio único: pase "asc" para ordenar en orden ascendente o "desc" en orden descendente. 
  • criterio es de tipo de colección: en este caso, cada elemento de la colección contiene un objeto estructurado de la siguiente manera:
    {"rutaPropiedad": cadena,
    "descendiente": booleano}

    Por defecto, las propiedades se ordenan en orden ascendente ("descendente" es falso).
    Puede agregar tantos objetos en la colección criterio como sea necesario.
  • criterio es de tipo entero largo: en este caso, pase una de las siguientes constantes del tema Objetos y colecciones:
    Constante Tipo Valor Comentario
    ck ascending Entero largo 0 Los elementos se ordenan de forma ascendente (predeterminado)
    ck descending Entero largo 1 Los elementos se ordenan en orden descendente

    Esta sintaxis solo ordena valores escalares en la colección (otros tipos de elementos como objetos o colecciones se devuelven desordenados).

Si la colección contiene elementos de diferentes tipos, primero se agrupan por tipo y se ordenan después. Los tipos se devuelven en el siguiente orden:

  1. nulo
  2. booleanos
  3. cadenas
  4. números
  5. objetos
  6. colecciones
  7. fechas

Ordenar una colección de números en orden ascendente y descendente:

 C_COLLECTION($c;$c2;$3)
 $c:=New collection
 For($vCounter;1;10)
    $c.push(Random)
 End for
 $c2:=$c.orderBy(ck ascending)
 $c3:=$c.orderBy(ck descending)

Ordenar una colección de objetos basada en una fórmula de texto con nombres de propiedad:

 C_COLLECTION($c)
 $c:=New collection
 For($vCounter;1;10)
    $c.push(New object("id";$vCounter;"value";Random))
 End for
 $c2:=$c.orderBy("value desc")
 $c2:=$c.orderBy("value desc, id")
 $c2:=$c.orderBy("value desc, id asc")

Ordenar una colección de objetos con una ruta de propiedad:

 C_COLLECTION($c)
 $c:=New collection
 $c.push(New object("name";"Cleveland";"phones";New object("p1";"01";"p2";"02")))
 $c.push(New object("name";"Blountsville";"phones";New object("p1";"00";"p2";"03")))
 $c2:=$c.orderBy("phones.p1 asc")

Ordenar una colección de objetos utilizando una colección de objetos criterio:

 C_COLLECTION($crit;$c)
 $crit:=New collection
 $c:=New collection
 For($vCounter;1;10)
    $c.push(New object("id";$vCounter;"value";Random))
 End for
 $crit.push(New object("propertyPath";"value";"descending";True))
 $crit.push(New object("propertyPath";"id";"descending";False))
 $c2:=$c.orderBy($crit)

Ordenar con una ruta de propiedad:

 C_COLLECTION($crit;$c)
 $c:=New collection
 $c.push(New object("name";"Cleveland";"phones";New object("p1";"01";"p2";"02")))
 $c.push(New object("name";"Blountsville";"phones";New object("p1";"00";"p2";"03")))
 $crit:=New collection(New object("propertyPath";"phones.p2";"descending";True))
 $c2:=$c.orderBy($crit)



Ver también 

collection.orderByMethod( )
collection.sort( )

 
PROPIEDADES 

Producto: 4D
Tema: Colecciones
Número 905251

This command can be run in preemptive processes

 
CONTENIDO DE LA PÁGINA 
 
HISTORIA 

Creado por: 4D v16 R6

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v19)
Manual de lenguaje 4D ( 4D v19.1)
Manual de lenguaje 4D ( 4D v19.4)
Manual de lenguaje 4D ( 4D v19.5)
Manual de lenguaje 4D ( 4D v19.6)
Manual de lenguaje 4D ( 4D v19.7)
Manual de lenguaje 4D ( 4D v19.8)