Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com

Home

 
4D v19.8
collection.orderBy( )

collection.orderBy( ) 


 

collection.orderBy ( {Kriterium} ) -> Funktionsergebnis 
Parameter Typ   Beschreibung
Kriterium  Text, Collection, Lange Ganzzahl in Text: Eigenschaftspfad(e) zum Sortieren der Collection
Collection: Collection der Kriterium Objekte
Lange Ganzzahl: ck ascending oder ck descending (skalare Werte)
Funktionsergebnis  Collection in Sortierte Kopie der Collection (flache Kopie)

Die Funktion collection.orderBy( ) sortiert die Elemente der Collection und gibt eine neue sortierte Collection zurück.

Diese Funktion gibt eine flache Kopie (shallow copy) zurück, d.h. Objekte oder Collections der beiden Collections nutzen dieselbe Referenz. Ist die ursprüngliche Collection eine shared collection, ist die zurückgegebene Collection ebenfalls eine shared collection.

Hinweis: Diese Funktion ändert nicht die ursprüngliche Collection.

Ohne den Parameter Kriterium sortiert die Funktion nur skalare Werte der Collection in aufsteigender Reihenfolge, d.h. andere Elementtypen wie Objekte oder Collections werden unsortiert zurückgegeben. Für eine andere Sortierung können Sie im Parameter Kriterium entweder die Konstante ck ascending oder ck descending übergeben (siehe unten).

Über den Parameter Kriterium können Sie auch definieren, wie Collection Elemente sortiert werden. Es gibt drei Syntaxarten:

  • Kriterium ist vom Typ Text (Formel): "propertyPath1 {desc or asc}, propertyPath2 {desc or asc},..." (standardmäßig: asc)
    In diesem Fall enthält Kriterium eine Formel mit 1 bis x Eigenschaftspfaden und (optional) Sortierreihenfolgen, getrennt durch Kommas. Die Reihenfolge, in der die Eigenschaften übergeben sind, bestimmt die Priorität beim Sortieren der Collection Elemente.
    Eigenschaften werden standardmäßig in aufsteigender Reihenfolge sortiert. Sie können die Sortierreihenfolge im Eigenschaftspfad, getrennt durch ein Leerzeichen setzen: "asc" für aufsteigende Reihenfolge oder "desc" für absteigende Reihenfolge. 
  • Kriterium ist vom Typ Collection: Hier enthält jedes Element der Collection ein Objekt mit folgender Struktur:
    {"propertyPath": string,
    "descending": boolean}

    Eigenschaften werden standardmäßig in aufsteigender Reihenfolge sortiert. ("absteigend" ist falsch).
    In Kriterium können Sie soviel Objekte, wie erforderlich sind, hinzufügen.
  • Kriterium ist vom Typ Lange Ganzzahl: Hier können Sie eine Konstante unter dem Thema Objekte und Collections übergeben:
    Konstante Typ Wert Kommentar
    ck ascending Lange Ganzzahl 0 Elemente in aufsteigender Reihenfolge sortieren (Standard)
    ck descending Lange Ganzzahl 1 Elemente in absteigender Reihenfolge sortieren

    Diese Syntax sortiert nur skalare Werte in der Collection, d.h. andere Elementtypen wie Objekte oder Collections werden unsortiert zurückgegeben.

Enthält die Collection Elemente verschiedener Typen, werden sie zuerst nach Typ gruppiert und anschließend sortiert. Für die Typen gilt folgende Reihenfolge:

  1. Null
  2. Boolean
  3. Strings
  4. Zahl
  5. Objekt
  6. Collection
  7. Datum

Eine Collection mit Zahlen in aufsteigender und absteigender Reihenfolge sortieren:

 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)

Eine Collection mit Objekten nach einer Textformel mit Eigenschaftennamen sortieren:

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

Eine Collection mit Objekten über einen Eigenschaftspfad sortieren:

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

 Eine Collection mit Objekten über eine Collection mit Kriterium Objekten sortieren:

 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)

Mit einem Eigenschaftspfad sortieren:

 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)



Siehe auch 

collection.orderByMethod()
collection.sort( )

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Collections
Nummer: 905251

Dieser Befehl kann in preemptive Prozessen laufen

 
SEITENINHALT 
 
GESCHICHTE 

Erstellt: 4D v16 R6

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v19)
4D Programmiersprache ( 4D v19.1)
4D Programmiersprache ( 4D v19.4)
4D Programmiersprache ( 4D v19.5)
4D Programmiersprache ( 4D v19.6)
4D Programmiersprache ( 4D v19.7)
4D Programmiersprache ( 4D v19.8)