Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com

Página Inicial

 
4D v19.8
collection.orderBy( )

collection.orderBy( ) 


 

collection.orderBy ( {critério} ) -> Resultado 
Parâmetro Tipo   Descrição
critério  Texto, Collection, Inteiro longo in Texto: rota de propriedade com a qual vai ordernar a coleção
Coleção: coleção de critérios de objetos
intLong: ck ascending ou ck descending (valores escalares)
Resultado  Collection in Cópia ordenada da coleção (cópia superficial)

O método collection.orderBy( ) devolve uma nova coleção que contenha todos os elementos da coleção na ordem especificada por criterio.

Este método devolve uma cópia superficial, o que significa que os objetos ou coleções em ambas coleções compartem a mesma referência. Se a coleção original for uma coleção compartida, a coleção devolvida também é uma coleção compartida.

Nota: este método não modifica a coleção original.

Se omitir o parâmetro criterio, o método ordena os valores escalares na coleção em ordem ascendente (outros tipos de elementos como objetos ou coleções forem devolvidas desordenadas). Pode modificar esta ordem automática passando as constantes ck ascending ou ck descending no parâmetro criterio (ver abaixo).

Também pode passar um parâmetro criterio para definir como devem ser ordenados os elementos da coleção. Três sintaxes são compatíveis para este parâmetro:

  • criterio é do tipo texto (fórmula): "rotaPropriedade1 {desc ou asc}, rotaPropriedade2 {desc ou asc}, ..." (orden por padrão: asc)
    Neste caso, criterio contém uma fórmula formada de 1 a x rotas de propriedade e (opcionalmente) órdens de classificação, separados por vírgulas. A ordem em que são passadas as propriedades determina a prioridade de clasificação dos elementos da coleção.
    Como padrão, as propriedades são ordenadas em ordem ascendente. Pode estabelecer a ordem de classificação de uma propriedade na string de critérios, separada da rota da propriedade por um espaço único: passe "asc" para ordenar em ordem ascendente ou "desc" para ordem descendente. 
  • criterio é de tipo de coleção: neste caso, cada elemento da coleção contém um objeto estruturado da maneira abaixo:
    {"rotaPropriedad": string,
    "descendente": booleano}

    Como padrão, as propriedades são ordenadas em orden ascendente ("descendente" é falso).
    Pode agregar tantos objetos na coleção criterio como seja necessário.
  • criterio é de tipo inteiro longo: neste caso, passe uma das constantes abaixo, do tema Objetos e coleções:
    Constante Tipo Valor Comentário
    ck ascending Inteiro longo 0 Os elementos são ordenados de forma ascendente (pré-determinado)
    ck descending Inteiro longo 1 Os elementos são ordenados em ordem descendente

    Esta sintaxe só ordena valores escalares na coleção (outros tipos de elementos como objetos ou coleções são devolvidas desordenadas).

Se a coleção contiver elementos de diferentes tipos, primeiro são agrupados por tipo e são ordenados depois. Os tipos são devolvidos na ordem abaixo:

  1. nulo
  2. booleanos
  3. strings
  4. números
  5. objetos
  6. coleções
  7. datas

Ordenar uma coleção de números em ordem ascendente e 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 uma coleção de objetos baseada em uma fórmula de texto com nomes de propriedade:

 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 uma coleção de objetos com uma rota de propriedade:

 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")

Se quiser ordenar uma coleção de objetos utilizando uma coleção de objetos critério:

 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 com uma rota de propriedade:

 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 também 

collection.orderByMethod( )
collection.sort( )

 
PROPRIEDADES 

Produto: 4D
Tema: Coleções
Número 905251

This command can be run in preemptive processes

 
CONTEÚDO DA PÁGINA 
 
HISTÓRIA 

Criado por: 4D v16 R6

 
ARTICLE USAGE

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