Vous êtes sur le site Web historique de la documentation de 4D. Les documentations sont progressivement déplacées vers developer.4d.com

Accueil

 
4D v19.8
collection.orderBy( )

collection.orderBy( ) 


 

collection.orderBy ( {critère} ) -> Résultat 
Paramètre Type   Description
critère  Texte, Collection, Entier long in Texte : chemin(s) de propriété(s) à utiliser pour trier la collection
Collection : Collection d'objets critère
Entier long : ck ascending ou ck descending (valeurs scalaires)
Résultat  Collection in Copie triée de la collection (shallow copy)

La méthode collection.orderBy( ) retourne une nouvelle collection contenant tous les éléments de la collection d'origine triés selon les critères définis par le paramètre critère.

Cette méthode retourne une "shallow copy" (copie superficielle), ce qui signifie que les objets ou les collections présents dans les deux collections partagent la même référence. Si la collection d'origine est une collection partagée, la collection retournée est également une collection partagée.

Note : Cette méthode ne modifie pas la collection d'origine.

Si vous omettez le paramètre critère, la méthode trie les valeurs scalaires de la collection par ordre croissant (les autres types d'éléments tels que les objets ou les collections sont retournés sans être trié). Vous pouvez modifier ce tri par défaut en passant la constante ck ascending ou ck descending dans le paramètre critère (voir ci-dessous).

Vous pouvez également passer le paramètre critère afin de configurer le tri des éléments de la collection. Les syntaxes suivantes sont prises en charge pour ce paramètre :

  • critère est de type texte (formule) : "cheminPropriété1 {desc ou asc}, cheminPropriété2 {desc ou asc},..." (ordre par défaut : asc)
    Dans ce cas, critère contient une formule constituée de 1 à N chemin(s) de propriété(s) et (optionnellement) ordres de tri, séparés par des virgules. L'ordre dans lequel les propriétés sont passées détermine la priorité des éléments de la collection.
    Par défaut, les propriétés sont triées pas ordre croissant. Vous pouvez définir l'ordre de tri de chaque propriété dans la formule de critère, séparée du chemin de propriété par un simple espace : passez "asc" pour trier par ordre croissant ou "desc" pour un ordre décroissant. 
  • critère est de type collection : dans ce cas, chaque élément de la collection contient un objet structuré de la manière suivante :
    {"propertyPath": chaîne,
    "descending": booléen}

    Par défaut, les propriétés sont triées par ordre croissant ("descending" est faux).
    Vous pouvez ajouter autant d'objets dans la collection critère que nécessaire.
  • critère est de type entier long : dans ce cas, vous passez une des constantes suivantes du thème Objets et collections :
    Constante Type Valeur Comment
    ck ascending Entier long 0 Les éléments sont triés par ordre croissant (défaut)
    ck descending Entier long 1 Les éléments sont triés par ordre décroissant

    Cette syntaxe trie uniquement les valeurs scalaires de la collection (les autres types d'éléments comme les objets ou les collections sont retournés non triés).

Si la collection contient des éléments de différents types, ils sont d'abord groupés par type et triés par la suite. Les types sont retournés dans l'ordre suivant :

  1. null
  2. booléens
  3. chaînes
  4. nombres
  5. objets
  6. collections
  7. dates

Tri d'une collection de nombres par ordre croissant et décroissant :

 C_COLLECTION($c;$c2;$3)
 $c:=Creer collection
 Boucle($vCounter;1;10)
    $c.push(Hasard)
 Fin de boucle
 $c2:=$c.orderBy(ck ascending)
 $c3:=$c.orderBy(ck descending)

Tri d'une collection d'objets basé sur une formule de texte avec noms de propriétés :

 C_COLLECTION($c)
 $c:=Creer collection
 Boucle($vCounter;1;10)
    $c.push(Creer objet("id";$vCounter;"value";Hasard))
 Fin de boucle
 $c2:=$c.orderBy("value desc")
 $c2:=$c.orderBy("value desc, id")
 $c2:=$c.orderBy("value desc, id asc")

Tri d'une collection d'objets sur des propriétés :

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

Tri d'une collection d'objets via une collection d'objets critères :

 C_COLLECTION($crit;$c)
 $crit:=Creer collection
 $c:=Creer collection
 Boucle($vCounter;1;10)
    $c.push(Creer objet("id";$vCounter;"value";Hasard))
 Fin de boucle
 $crit.push(Creer objet("propertyPath";"value";"descending";Vrai))
 $crit.push(Creer objet("propertyPath";"id";"descending";Faux))
 $c2:=$c.orderBy($crit)

Tri avec un chemin de propriété :

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



Voir aussi  

collection.orderByMethod( )
collection.sort( )

 
PROPRIÉTÉS 

Produit : 4D
Thème : Collections
Numéro : 905251
Nom intl. : collection.orderBy( )

Commande(s) éligible(s) à l'exécution dans un process préemptif

 
PAGE CONTENTS 
 
HISTORIQUE 

Créé : 4D v16 R6

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v19)
4D - Langage ( 4D v19.1)
4D - Langage ( 4D v19.4)
4D - Langage ( 4D v19.5)
4D - Langage ( 4D v19.6)
4D - Langage ( 4D v19.7)
4D - Langage ( 4D v19.8)