4D v18

collection.sort( )

Página Inicial

 
4D v18
collection.sort( )

collection.sort( )  


 

O método collection.sort( ) ordena os elementos da coleção e devolve uma nova coleção ordenada. 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.

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

Se for chamada a collection.sort( ) sem parâmetros, só são classificados os valores escalares (número, texto, data, booleanos). Os elementos são ordenados como padrão em ordem ascendente, de acordo com seu tipo.

Se quiser ordenar os elementos da coleção em outra ordem ou ordenar qualquer tipo de elemento, deve oferecer em nomMet um método de comparação que compare dois valores e devolva true em $1.result se o primeiro valor for menor que o segundo valor. Pode oferecer parâmetros adicionais a nomMet se for necessário.

  • nomMet receberá os parâmetros abaixo:
    • $1 (objeto), onde:
      • $1.value (todo tipo): valor do primeiro elemento a ser comparado
      • $1.value2 (todo tipo): valor do segundo elemento a ser comparado
    • $2...$N (todo tipo): parâmetros adicionais
  • nomMet define o parâmetro abaixo:
    • $1.result (booleano): true se $1.value < $1.value2, do contrário false       

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. null
  2. booleanos
  3. strings
  4. números
  5. objetos
  6. coleções
  7. datas

 C_COLLECTION($col)
 $col:=New collection("Tom";5;"Mary";3;"Henry";1;"Jane";4;"Artie";6;"Chip";2)
 $col2:=$col.sort() // $col2=["Artie","Chip","Henry","Jane","Mary","Tom",1,2,3,4,5,6]
  // $col=["Artie","Chip","Henry","Jane","Mary","Tom",1,2,3,4,5,6]

 C_COLLECTION($col)
 $col:=New collection(10;20)
 $col2:=$col.push(5;3;1;4;6;2).sort() //$col2=[1,2,3,4,5,6,10,20]

 C_COLLECTION($col)
 $col:=New collection(33;4;66;1111;222)
 $col2:=$col.sort() //ordem numérica: [4,33,66,222,1111]
 $col3:=$col.sort("numberOrder") //ordem alfabética: [1111,222,33,4,66]

  //Método projeto numberOrder
 C_OBJECT($1)
 $1.result:=String($1.value)<String($1.value2)



Ver também 

collection.orderBy( )
collection.orderByMethod( )

 
PROPRIEDADES 

Produto: 4D
Tema: Coleções

This command can be run in preemptive processes

 
CONTEÚDO DA PÁGINA 
 
HISTÓRIA 

 
ARTICLE USAGE

Manual de linguagem 4D ( 4D v18)