Aller au contenu principal
Version : 20

Collection

La classe Collection gère les expressions de type Collection.

Une collection est initialisée avec :

New collection {( ...value : any )} : Collection    
New shared collection {( ...value : any )} : Collection     crée une nouvelle collection partagée vide ou préremplie

Exemple​

var $colVar : Collection //création d'une variable 4D de type collection
$colVar:=New collection ///initialisation de la collection et assignation à la variable 4D

Sommaire​

.at( index : Integer ) : any     retourne l'élément à la position index, acceptant des entiers positifs et négatifs
.average( {propertyPath : Text } ) : Real    retourne la moyenne arithmétique des valeurs définies dans la collection
.clear() : Collection    supprime tous les éléments de la collection et retourne une collection vide
.combine( col2 : Collection {; index : Integer } ) : Collection    insère des éléments col2 à la fin ou à la position index spécifiée dans l'instance de collection et renvoie la collection modifiée
.concat( value : any { ; ...valueN : any } ) : Collection    renvoie une nouvelle collection contenant les éléments de la collection originale avec tous les éléments du paramètre value ajoutés à la fin
.copy() : Collection
.copy( option : Integer ) : Collection
.copy( option : Integer ; groupWithCol : Collection ) : Collection
.copy( option : Integer ; groupWithObj : Object ) : Collection
     renvoie une copie profonde (deep copy) de l'instance de collection
.count( { propertyPath : Text } ) : Real    retourne le nombre d'éléments non nuls dans la collection
.countValues( value : any {; propertyPath : Text } ) : Real    retourne le nombre d'occurrences de value dans la collection
.distinct( {options : Integer} ) : Collection
.distinct( propertyPath : Text {; options : Integer } ) : Collection
    renvoie une collection contenant uniquement les valeurs distinctes (différentes) de la collection originale
.equal( collection2 : Collection {; option : Integer } ) : Boolean    compare la collection avec collection2
.every( { startFrom : Integer ; } formula : 4D.Function { ;...param : any } ) : Boolean
.every( { startFrom : Integer ; } methodName : Text { ;...param : any } ) : Boolean
    retourne true si tous les éléments de la collection ont été évalués à vrai par le test implémenté dans l'objet formula ou la méthode methodName
.extract( propertyPath : Text { ; option : Integer } ) : Collection
.extract( propertyPath : Text ; targetPath : Text { ;...propertyPathOrTargetPathN : Text } ) : Collection
    crée et renvoie une nouvelle collection contenant les valeurs propertyPath extraites de la collection originale d'objets
.fill( value : any ) : Collection
.fill( value : any ; startFrom : Integer { ; end : Integer } ) : Collection
    remplit la collection avec la valeur spécifiée, éventuellement de l'index startFrom à l'index end, et renvoie la collection résultante
.filter( formula : 4D.Function { ; ...param : any } ) : Collection
.filter( methodName : Text { ; ...param : any } ) : Collection
    retourne une nouvelle collection contenant tous les éléments de la collection d'origine pour lesquels le résultat de la formula ou de la méthode methodName est true
.find( { startFrom : Integer ; } formula : 4D.Function { ; ...param : any } ) : any
.find( { startFrom : Integer ; } methodName : Text { ; ...param : any } ) : any
    retourne la première valeur dans la collection pour laquelle le résultat de formula ou de methodName, appliqué à chaque élément, retourne true
.findIndex( { startFrom : Integer ; } formula : 4D.Function { ; ...param : any } ) : Integer
.findIndex( { startFrom : Integer ; } methodName : Text { ; ...param : any } ) : Integer
    retourne l'indice, dans la collection, du premier élément pour lequel formula ou methodName, appliqué à chaque élément, retourne true
.first() : any     retourne le premier élément de la collection
.flat( { depth : Integer } ) : Collection    crée une nouvelle collection avec tous les éléments des sous-collections concaténés de manière récursive jusqu'à la depth spécifiée
.flatMap( formula : 4D.Function { ; ...param : any } ) : Collection
.flatMap( methodName : Text { ; ...param : any } ) : Collection
    crée une nouvelle collection basée sur le résultat de l'appel de la fonction 4D formula ou de la méthode methodName sur chaque élément de la collection d'origine et mise à plat sur une profondeur de 1
.includes( toSearch : expression { ; startFrom : Integer } ) : Boolean    retourne True si l'expression toSearch est trouvée parmi les éléments de la collection, sinon False
.indexOf( toSearch : expression { ; startFrom : Integer } ) : Integer     recherche l'expression toSearch parmi les éléments de la collection et retourne l'indice de la première occurrence trouvée, ou -1 si aucune occurrence n'a été trouvée
.indices( queryString : Text { ; ...value : any } ) : Collection     renvoie les indices, dans la collection d'origine, des éléments de la collection d'objets qui correspondent aux conditions de recherche queryString
.insert( index : Integer ; element : any ) : Collection      insère element à la position index spécifiée dans l'instance de collection et renvoie la collection modifiée
.join( delimiter : Text { ; option : Integer } ) : Text     convertit tous les éléments de la collection en chaînes et les concatène en utilisant la chaîne delimiter spécifiée comme séparateur
.last() : any     renvoie le dernier élément de la collection
.lastIndexOf( toSearch : expression { ; startFrom : Integer } ) : Integer     recherche l'expression toSearch parmi les éléments de la collection et renvoie l'indice de la dernière occurrence
.length : Integer    renvoie le nombre d'éléments de la collection
.map( formula : 4D.Function { ; ...param : any } ) : Collection
.map( methodName : Text { ; ...param : any } ) : Collection
    crée une nouvelle collection basée sur le résultat de l'appel de la fonction 4D formula ou de la méthode methodName sur chaque élément de la collection d'origine
.max( { propertyPath : Text } ) : any     renvoie l'élément ayant la valeur la plus élevée dans la collection
.min( { propertyPath : Text } ) : any     renvoie l'élément ayant la plus petite valeur dans la collection
.orderBy( ) : Collection
.orderBy( pathStrings : Text ) : Collection
.orderBy( pathObjects : Collection ) : Collection
.orderBy( ascOrDesc : Integer ) : Collection
    renvoie une nouvelle collection contenant tous les éléments de la collection dans l'ordre spécifié
.orderByMethod( formula : 4D.Function { ; ...extraParam : expression } ) : Collection
.orderByMethod( methodName : Text { ; ...extraParam : expression } ) : Collection
    renvoie une nouvelle collection contenant tous les éléments de la collection dans l'ordre défini par la fonction 4D formula ou la méthode methodName
.pop() : any     supprime le dernier élément de la collection et le renvoie comme résultat de la fonction
.push( element : any { ;...elementN } ) : Collection     ajoute un ou plusieurs element(s) à la fin de l'instance de collection et renvoie la collection modifiée
.query( queryString : Text ; ...value : any ) : Collection
.query( queryString : Text ; querySettings : Object ) : Collection
    renvoie tous les éléments d'une collection d'objets qui correspondent aux conditions de recherche
.reduce( formula : 4D.Function { ; initValue : any { ; ...param : expression }} ) : any
.reduce( methodName : Text { ; initValue : any { ; ...param : expression }} ) : any
    applique la callback formula ou methodName à un accumulateur et à chaque élément de la collection (de gauche à droite) pour la réduire à une valeur unique
.reduceRight( formula : 4D.Function { ; initValue : any { ; ...param : expression }} ) : any
.reduceRight( methodName : Text { ; initValue : any { ; ...param : expression }} ) : any
    applique la callback formula ou methodName à un accumulateur et à chaque élément de la collection (de droite à gauche) pour la réduire à une valeur unique
.remove( index : Integer { ; howMany : Integer } ) : Collection     supprime un ou plusieurs élément(s) à partir de la position index spécifiée dans la collection et retourne la collection modifiée
.resize( size : Integer { ; defaultValue : any } ) : Collection     redéfinit la longueur de la collection à partir de la nouvelle taille spécifiée et retourne la collection redimensionnée
.reverse( ) : Collection     retourne une nouvelle collection avec tous les éléments de la collection originale dans l'ordre inverse
.shift() : any    supprime le premier élément de la collection et le retourne comme résultat de la fonction
.slice( startFrom : Integer { ; end : Integer } ) : Collection    retourne une partie d'une collection dans une nouvelle collection
.some( { startFrom : Integer ; } formula : 4D.Function { ; ...param : any } ) : Boolean
.some( { startFrom : Integer ; } methodName : Text { ; ...param : any } ) : Boolean
    retourne true si au moins un élément de la collection a réussi un test implémenté dans formula ou methodName
.sort() : Collection
.sort( ascOrDesc : Integer ) : Collection
.sort( formula : 4D.Function { ; ...extraParam : any } ) : Collection
.sort( methodName : Text { ; ...extraParam : any } ) : Collection
    trie les éléments de la collection d'origine et retourne également la collection triée
.sum( { propertyPath : Text } ) : Real    retourne la somme de toutes les valeurs de l'instance de collection
.unshift( value : any { ;...valueN : any } ) : Collection    insère value au début de la collection

New collection​

New collection {( ...value : any )} : Collection

ParamètresTypeDescription
valueNumber, Text, Date, Time, Boolean, Object, Collection, Picture, Pointer->Valeur(s) de collection
RésultatCollection<-$1.stop (booléen, optionnel) : true pour stopper le rétroappel.

Description​

Recherche avec des dates :

Prise en charge des formules

Vous devez affecter la référence retournée à une variable 4D de type Collection.

Utilisation de parenthèses

Condition Not appliquée à une assertion

Sinon, vous pouvez ajouter ou modifier des éléments ultérieurement par affectation. Par exemple :

Vous pouvez fournir des paramètres supplémentaires à la callback si nécessaire.

Si l'indice du nouvel élément est au-delà du dernier élément existant de la collection, la collection est automatiquement redimensionnée et tous les nouveaux éléments intermédiaires reçoivent la valeur null.

Vous pouvez passer n'importe quel nombre de valeurs de n'importe quel type pris en charge (number, text, date, picture, pointer, object, collection...). Contrairement aux tableaux, les collections peuvent mélanger des données de différents types.

Vous devez prêter attention aux problèmes de conversion suivants :

  • La nouvelle collection partagée
  • Les dates sont stockées sous la forme de date « aaaa-mm-jj » ou des chaînes au format « AAAA-MM-JJTHH: ss.SSSZ: mm » , selon la configuration actuelle « dates à l'intérieur des objets » de la base de données. Lors de la conversion de dates 4D en texte avant de les stocker dans la collection, par défaut le programme prend en compte le fuseau horaire local. Indice de fin (non inclus)
  • Si vous passez une heure, elle est stockée sous la forme d'un nombre de millisecondes (Réel).

Exemple 1​

Vous souhaitez créer une nouvelle collection vide et l'assigner à une variable collection 4D :

var $myCol : Collection
$myCol:=New collection
//$myCol=[]

Exemple 2​

Vous souhaitez créer une collection pré-remplie :

var $filledColl : Collection
$filledColl:=New collection(33;"mike";"november";->myPtr;Current date)
//$filledColl=[33,"mike","november","->myPtr","2017-03-28T22:00:00.000Z"]

Exemple 3​

Vous souhaitez créer une nouvelle collection puis ajouter un élément :

var $coll : Collection
$coll:=New collection("a";"b";"c")
//$coll=["a","b","c"]
$coll[9]:="z" //ajouter un 10e élément avec la valeur "z"
$vcolSize:=$coll.length //10
//$coll=["a","b","c",null,null,null,null,null,null,"z"]

New shared collection​

Historique
ReleaseModifications
v16 R6Ajout

New shared collection {( ...value : any )} : Collection

ParamètresTypeDescription
valueNumber, Text, Date, Time, Boolean, Object, Collection->Valeur(s) de la collection partagée
RésultatCollection<-$1.stop (booléen, optionnel) : true pour stopper le rétroappel de la méthode.

Description​

La commande New shared collection crée une nouvelle collection partagée vide ou préremplie et retourne sa référence.

Par exemple : La lecture d'un élément sans structure Use...End use est cependant possible.

info

Les symboles suivants sont pris en charge :

Si vous ne passez aucun paramètre, New shared collection crée une collection vide et retourne sa référence.

Vous devez affecter la référence retournée à une variable 4D de type Collection.

Utilisation de parenthèses

Optionnellement, vous pouvez préremplir la nouvelle collection partagée en passant une ou plusieurs value(s) comme paramètre(s). Sinon, vous pouvez ajouter ou modifier des éléments ultérieurement via l'assignation en notation objet (cf. exemple).

Si l'indice du nouvel élément est au-delà du dernier élément existant de la collection partagée, la collection est automatiquement redimensionnée et tous les nouveaux éléments intermédiaires reçoivent la valeur null.

Vous pouvez passer tout nombre de valeurs de n'importe quel type pris en charge :

  • nombre (réel, entier...). Les valeurs numériques sont toujours stockées sous forme de réels.
  • text
  • boolean
  • date
  • heure (stockée en nombre de milliseconds - réel)
  • Null
  • Si vous souhaitez que l'évaluation soit sensible à la casse ou pour différencier des caractères accentués, passez la constante ck diacritical dans le paramètre option.
  • $1.stop (booléen, optionnel) : true pour stopper le rétroappel de la méthode.
note

Contrairement aux collections standard (non partagées), les collections partagées ne prennent pas en charge les images, les pointeurs et les objets ou collections non partagés.

Exemple​

$mySharedCol:=New shared collection("alpha";"omega")
Use($mySharedCol)
$mySharedCol[1]:="beta"
End use

.at()​

Historique
ReleaseModifications
20Ajout

.at( index : Integer ) : any

ParamètresTypeDescription
indexInteger->Indice de l'élément à renvoyer
Résultatany<-L'élément à cet indice

Description​

La fonction .at() retourne l'élément à la position index, acceptant des entiers positifs et négatifs.

Cette fonction ne modifie pas la collection d'origine.

Les nombres entiers négatifs déterminent la position à partir du dernier élément de la collection.

La fonction renvoie la valeur Undefined si index dépasse les limites de la collection.

Exemple​

var $col : Collection
$col:=New collection(10; 20; 30; 40; 50)
$element:=$col.at(0) // 10
$element:=$col.at(1) // 20
$element:=$col.at(-1) // 50
$element:=$col.at(-2) // 40
$element:=$col.at(10) // undefined

.average()​

Historique
ReleaseModifications
v16 R6Ajout

.average( {propertyPath : Text } ) : Real

ParamètresTypeDescription
propertyPathText->Chemin de propriété d'objet à utiliser pour évaluer les valeurs
RésultatReal, Undefined<-Moyenne arithmétique des valeurs de la collection

Description​

La fonction .average() retourne la moyenne arithmétique des valeurs définies dans la collection.

Seuls les éléments ayant une valeur numérique sont pris en compte pour le calcul (les autres types d'éléments sont ignorés).

Les positions sont retournées dans un ordre croissant.

.average() retourne undefined si :

  • la collection est vide,
  • la collection ne contient pas d'éléments numériques,
  • propertyPath n'est pas trouvé dans la collection.

Exemple 1​

var $col : Collection
$col:=New collection(10;20;"Monday";True;6)
$vAvg:=$col.average() //12

Exemple 2​

var $col : Collection
$col:=New collection
$col.push(New object("name";"Smith";"salary";10000))
$col.push(New object("name";"Wesson";"salary";50000))
$col.push(New object("name";"Gross";"salary";10500))
$vAvg:=$col.average("salary") //23500

.clear()​

Historique
ReleaseModifications
v16 R6Ajout

.clear() : Collection

ParamètresTypeDescription
RésultatCollection<-Collection d'origine dont tous les éléments ont été supprimés

Description​

La fonction .clear() supprime tous les éléments de la collection et retourne une collection vide.

Cette fonction modifie la collection d'origine.

Exemple​

var $col : Collection
$col:=New collection(1;2;5)
$col.clear()
$vSize:=$col.length //$vSize=0

.combine()​

Historique
ReleaseModifications
v16 R6Ajout

.combine( col2 : Collection {; index : Integer } ) : Collection

ParamètresTypeDescription
col2Collection->Collection à combiner
indexInteger->Emplacement où insérer les éléments à combiner (défaut=length+1)
RésultatCollection<-Collection d'origine incluant les éléments combinés

Description​

La fonction .combine() insère des éléments col2 à la fin ou à la position index spécifiée dans l'instance de collection et renvoie la collection modifiée. A la différence de la fonction .insert(), .combine() ajoute chaque valeur de col2 dans la collection d'origine, et non en tant qu'élément unique de collection.

Cette fonction modifie la collection d'origine.

Par défaut, les éléments col2 sont ajoutés à la fin de la collection originale. Vous pouvez passer dans index la position à laquelle vous souhaitez que les éléments col2 soient insérés dans la collection.

Attention : N'oubliez pas que la numérotation des éléments de collection débute à 0.

  • Si index > la longueur de la collection, l'index de départ sera fixé à la longueur de la collection.
  • Si index < 0, il est recalculé comme index:=index+length (il est considéré comme le décalage par rapport à la fin de la collection).
  • Si la valeur calculée est négative, index est mis à 0.

Exemple​

var $c; $fruits : Collection
$c:=New collection(1;2;3;4;5;6)
$fruits:=New collection("Orange";"Banana";"Apple";"Grape")
$c.combine($fruits;3) //[1,2,3,"Orange","Banana","Apple","Grape",4,5,6]

.concat()​

Historique
ReleaseModifications
v16 R6Ajout

.concat( value : any { ; ...valueN : any } ) : Collection

ParamètresTypeDescription
valueany->Valeur(s) à concaténer. Si value est une collection, tous ses éléments sont ajoutés en tant que nouveaux éléments à la fin de la collection d'origine.
RésultatCollection<-Nouvelle collection contenant les valeurs d'origine et les valeurs ajoutées

Description​

La fonction .concat() renvoie une nouvelle collection contenant les éléments de la collection originale avec tous les éléments du paramètre value ajoutés à la fin.

Cette fonction ne modifie pas la collection d'origine.

La collection retournée contient l'élément spécifié par startFrom et tous les éléments suivants jusqu'à l'élément spécifié par end (mais non compris). Si seul le paramètre startFrom est spécifié, la collection retournée contient tous les éléments de startFrom jusqu'au dernier élément de la collection d'origine.

Exemple​

var $c : Collection
$c:=New collection(1;2;3;4;5)
$fruits:=New collection("Orange";"Banana";"Apple";"Grape")
$fruits.push(New object("Intruder";"Tomato"))
$c2:=$c.concat($fruits) //[1,2,3,4,5,"Orange","Banana","Apple","Grape",{"Intruder":"Tomato"}]
$c2:=$c.concat(6;7;8) //[1,2,3,4,5,6,7,8]

.copy()​

Historique
ReleaseModifications
18 R3Nouvelle option ck shared. Nouveaux paramètres groupWith
v16 R6Ajout

.copy() : Collection
.copy( option : Integer ) : Collection
.copy( option : Integer ; groupWithCol : Collection ) : Collection
.copy( option : Integer ; groupWithObj : Object ) : Collection

ParamètresTypeDescription
optionInteger->ck resolve pointers: résoudre les pointeurs avant la copie,
ck shared: retourner une collection partagée
groupWithColCollection->Collection partagée à grouper avec la collection résultante
groupWithObjObject->Objet partagé à grouper avec la collection résultante
RésultatCollection<-Copie profonde de la collection d'origine (deep copy)

Description​

La fonction .copy() renvoie une copie profonde (deep copy) de l'instance de collection. Deep copy signifie que les objets ou les collections présents dans la collection d'origine sont dupliqués et ne partagent pas leur référence avec la collection qui est retournée.

Cette fonction ne modifie pas la collection d'origine.

S'il est passé, le paramètre option peut contenir l'une des constantes suivantes (ou les deux) :

optionDescription
ck resolve pointersSi la collection d'origine contient des valeurs de type pointeur, par défaut la copie contient également les pointeurs. Si la collection d'origine contient des valeurs de type pointeur, par défaut la copie contient également les pointeurs. Dans ce cas, chaque pointeur contenu dans la collection est évalué lors de la copie et sa valeur déréférencée est utilisée.
ck sharedPar défaut, copy() retourne une collection standard (non partagée), même si la fonction s'applique à une collection partagée. Passez la constante ck shared pour créer une collection partagée. Dans ce cas, vous pouvez utiliser le paramètre groupWith pour associer la collection partagée à une autre collection ou à un autre objet (voir ci-dessous).

Les paramètres groupWithCol ou groupWithObj vous permettent de désigner une collection ou un objet avec lequel la collection résultante doit être associée.

note

Les objets Datastore, dataclass et entity ne sont pas copiables. Si .copy() est appelé avec eux, les valeurs Null sont retournées.

Exemple 1​

Nous souhaitons copier la collection régulière (non partagée) $lastnames dans l'objet partagé $sharedObject. Pour cela, nous devons créer une copie partagée de la collection ($sharedLastnames).

var $sharedObject : Object
var $lastnames;$sharedLastnames : Collection
var $text : Text

$sharedObject:=New shared object

$text:=Document to text(Get 4D folder(Current resources folder)+"lastnames.txt")
$lastnames:=JSON Parse($text) //$lastnames est un collection standard

$sharedLastnames:=$lastnames.copy(ck shared) //$sharedLastnames est une collection partagée

//Nous pouvons désormais placer $sharedLastnames dans $sharedObject
Use($sharedObject)
$sharedObject.lastnames:=$sharedLastnames
End use

Exemple 2​

Nous voulons combiner $sharedColl1 et $sharedColl2. Etant donné qu'ils appartiennent à différents groupes partagés, une combinaison directe pourrait générer une erreur. Etant donné qu'ils appartiennent à différents groupes partagés, une combinaison directe pourrait générer une erreur.

var $sharedColl1;$sharedColl2;$copyColl : Collection

$sharedColl1:=New shared collection(New shared object("lastname";"Smith"))
$sharedColl2:=New shared collection(New shared object("lastname";"Brown"))

//$copyColl appartient au nouveau groupe partagé comme $sharedColl2
$copyColl:=$sharedColl1.copy(ck shared;$sharedColl2)
Use($sharedColl2)
$sharedColl2.combine($copyColl)
End use

Exemple 3​

Nous avons une collection standard ($lastnames) et nous souhaitons la placer dans le Storage de l'application. Pour cela, nous devons créer une copie partagée au préalable ($sharedLastnames).

var $lastnames;$sharedLastnames : Collection
var $text : Text

$text:=Document to text(Get 4D folder(Current resources folder)+"lastnames.txt")
$lastnames:=JSON Parse($text) //$lastnames est une collection standard

$sharedLastnames:=$lastnames.copy(ck shared) // copie partagée

Use(Storage)
Storage.lastnames:=$sharedLastnames
End use

Exemple 4​

Cet exemple illustre l'utilisation de l'option ck resolve pointers :

var $col : Collection
var $p : Pointer
$p:=->$what

$col:=New collection
$col.push(New object("alpha";"Hello";"num";1))
$col.push(New object("beta";"You";"what";$p))

$col2:=$col.copy()
$col2[1].beta:="World!"
ALERT($col[0].alpha+" "+$col2[1].beta) //"Hello World!"

$what:="You!"
$col3:=$col2.copy(ck resolve pointers)
ALERT($col3[0].alpha+" "+$col3[1].what) //"Hello You!"

.count()​

Historique
ReleaseModifications
v16 R6Ajout

.count( { propertyPath : Text } ) : Real

ParamètresTypeDescription
propertyPathText->Chemin de propriété d'objet à utiliser pour évaluer les valeurs
RésultatReal<-Nombre d'éléments dans la collection

Description​

La fonction .count() retourne le nombre d'éléments non nuls dans la collection.

Si la collection contient des objets, vous pouvez passer le paramètre propertyPath. Dans ce cas, seuls les éléments qui contiennent le propertyPath sont pris en compte.

Exemple​

var $col : Collection
var $count1;$count2 : Real
$col:=New collection(20;30;Null;40)
$col.push(New object("name";"Smith";"salary";10000))
$col.push(New object("name";"Wesson";"salary";50000))
$col.push(New object("name";"Gross";"salary";10500))
$col.push(New object("lastName";"Henry";"salary";12000))
$count1:=$col.count() //$count1=7
$count2:=$col.count("name") //$count2=3

.countValues()​

Historique
ReleaseModifications
v16 R6Ajout

.countValues( value : any {; propertyPath : Text } ) : Real

ParamètresTypeDescription
valueText, Number, Boolean, Date, Object, Collection->Valeur à compter
propertyPathText->Chemin de propriété d'objet à utiliser pour évaluer les valeurs
RésultatReal<-Nombre d'occurrences de la valeur

Description​

La fonction .countValues() retourne le nombre d'occurrences de value dans la collection.

Vous pouvez passer dans value :

  • une valeur scalaire (texte, numérique, booléen, date),
  • une référence d'objet ou de collection.

Pour qu'un élément soit comptabilisé, le type de value doit être égal à celui de l'élément ; la fonction utilise l'opérateur d'égalité.

Le paramètre optionnel propertyPath vous permet de compter des valeurs à l'intérieur d'une collection d'objets : passez dans propertyPath le chemin de la propriété dont vous souhaitez comptabiliser le nombre de valeurs.

Cette fonction ne modifie pas la collection d'origine.

Exemple 1​

var $col : Collection
var $vCount : Integer
$col:=New collection(1;2;5;5;5;3;6;4)
$vCount:=$col.countValues(5) // $vCount=3

Exemple 2​

var $col : Collection
var $vCount : Integer
$col:=New collection
$col.push(New object("name";"Smith";"age";5))
$col.push(New object("name";"Wesson";"age";2))
$col.push(New object("name";"Jones";"age";3))
$col.push(New object("name";"Henry";"age";4))
$col.push(New object("name";"Gross";"age";5))
$vCount:=$col.countValues(5;"age") //$vCount=2

Exemple 3​

var $numbers; $letters : Collection
var $vCount : Integer

$letters:=New collection("a";"b";"c")
$numbers:=New collection(1;2;$letters;3;4;5)

$vCount:=$numbers.countValues($letters) //$vCount=1

.distinct()​

Historique
ReleaseModifications
20Prise en charge de ck count values
v16 R6Ajout

.distinct( {options : Integer} ) : Collection
.distinct( propertyPath : Text {; options : Integer } ) : Collection

ParamètresTypeDescription
propertyPathText->Chemin de propriété d'objet à utiliser pour évaluer les valeurs
optionsInteger->ck diacritical, ck count values
RésultatCollection<-Nouvelle collection contenant uniquement les valeurs distinctes

Description​

La fonction .distinct() renvoie une collection contenant uniquement les valeurs distinctes (différentes) de la collection originale.

Cette fonction ne modifie pas la collection d'origine.

La collection retournée est automatiquement triée. Les valeurs Null ne sont pas retournées.

Si la collection contient des objets, vous pouvez passer le paramètre propertyPath pour indiquer la propriété d'objet dont vous souhaitez obtenir les valeurs distinctes.

Dans le paramètre options, vous pouvez passer une ou une combinaison des constantes suivantes :

ConstanteValeurCommentaire
ck diacritical8L'évaluation est sensible à la casse et différencie les caractères accentués. Par défaut si omis, une évaluation non diacritique est effectuée
ck count values32Renvoie le nombre d'éléments pour chaque valeur distincte. Lorsque cette option est passée, .distinct() renvoie une collection d'objets contenant une paire d'attributs {"value":*value*;"count":*count*}.

Exemples​

var $c; $c2; $c3 : Collection
$c:=New collection
$c.push("a";"b";"c";"A";"B";"c";"b";"b")
$c.push(New object("size";1))
$c.push(New object("size";3))
$c.push(New object("size";1))
$c2:=$c.distinct() //$c2=["a","b","c",{"size":1},{"size":3},{"size":1}]
$c2:=$c.distinct(ck diacritical) //$c2=["a","A","b","B","c",{"size":1},{"size":3},{"size":1}]
$c2:=$c.distinct("size") //$c2=[1,3]
$c3:=$c.distinct("size";ck count values) //$c3=[{value:1,count:2},{value:3,count:1}]

.equal()​

Historique
ReleaseModifications
v16 R6Ajout

.equal( collection2 : Collection {; option : Integer } ) : Boolean

ParamètresTypeDescription
collection2Collection->Collection à comparer
optionInteger->ck diacritical: évaluation diacritique ("A" # "a" par exemple)
RésultatBoolean<-Vrai si les collections sont identiques, sinon faux

Description​

La fonction .equal() compare la collection avec collection2 et retourne true si elles sont identiques (deep comparison).

Notes
  • La fonction .equal() ne vérifie l'égalité que pour les chaînes de caractères, les booléens, les nombres et les éléments de type null dans les collections. Elle ne vérifie pas l'égalité des objets natifs.
  • Les éléments avec des valeurs null ne sont pas égaux aux éléments non définis.

Par défaut, une évaluation non diacritique est effectuée. L'évaluation est sensible à la casse et différencie les caractères accentués.

Exemple​

var $c; $c2 : Collection
var $b : Boolean

$c:=New collection(New object("a";1;"b";"orange");2;3)
$c2:=New collection(New object("a";1;"b";"orange");2;3;4)
$b:=$c.equal($c2) // false

$c:=New collection(New object("1";"a";"b";"orange");2;3)
$c2:=New collection(New object("a";1;"b";"orange");2;3)
$b:=$c.equal($c2) // false

$c:=New collection(New object("a";1;"b";"orange");2;3)
$c2:=New collection(New object("a";1;"b";"ORange");2;3)
$b:=$c.equal($c2) // true

$c:=New collection(New object("a";1;"b";"orange");2;3)
$c2:=New collection(New object("a";1;"b";"ORange");2;3)
$b:=$c.equal($c2;ck diacritical) //false

.every()​

Historique
ReleaseModifications
19 R6Prise en charge des formules
v16 R6Ajout

.every( { startFrom : Integer ; } formula : 4D.Function { ;...param : any } ) : Boolean
.every( { startFrom : Integer ; } methodName : Text { ;...param : any } ) : Boolean

ParamètresTypeDescription
startFromInteger->Elément à partir duquel débuter l'évaluation
formula4D.Function->Objet formule
methodNameText->Nom de méthode
paramMixed->Paramètre(s) à passer à formula ou methodName
RésultatBoolean<-True si tous les éléments ont passé le test avec succès

Description​

La fonction .every() retourne true si tous les éléments de la collection ont été évalués à vrai par le test implémenté dans l'objet formula ou la méthode methodName fourni(e).

Vous désignez le code de rétroappel (callback) à exécuter pour évaluer les éléments de la collection en utilisant soit :

  • formula (syntaxe recommandée), un objet Formula qui peut encapsuler toute expression exécutable, y compris des fonctions et des méthodes projet;
  • soit methodName, le nom d'une méthode projet (texte).

La callback est appelée avec le(s) paramètre(s) passé(s) dans param (facultatif). La callback peut effectuer n'importe quel test, avec ou sans le(s) paramètre(s) et doit retourner true pour chaque élément remplissant le test. Elle reçoit un Objet en premier paramètre ($1).

La callback reçoit les paramètres suivants :

  • dans $1.value : valeur de l'élément à évaluer
  • dans $2 : param
  • dans $N... : paramN...

Elle peut définir le(s) paramètre(s) suivant(s) :

  • (obligatoire si vous avez utilisé une méthode) $1.result (Boolean) : true si l'évaluation de la valeur de l'élément est réussie, false sinon.
  • $1.stop (booléen, optionnel) : true pour stopper le rétroappel de la méthode. La valeur retournée est la dernière calculée.

Dans tous les cas, au point où la fonction .every() rencontre le premier élément de la collection évalué à false, elle cesse d'appeler la callback et retourne false.

Par défaut, .every() évalue l'ensemble de la collection. Optionnellement, vous pouvez passer dans startFrom l'index de l'élément à partir duquel commencer le test.

  • Si startFrom >= la longueur de la collection, false est retourné, ce qui signifie que la collection n'est pas testée.
  • Si startFrom < 0, la fin de la collection est considérée comme point de départ du calcul de la position (startFrom:=startFrom+length).
  • Si startFrom = 0, l'ensemble de la collection est évalué (défaut).

Exemple 1​

var $c : Collection
var $b : Boolean
var $f : 4D.Function

$f:=Formula($1.value>0)
$c:=New collection
$c.push(5;3;1;4;6;2)
$b:=$c.every($f) // retourne true
$c.push(-1)
$b:=$c.every($f) // retourne false

Exemple 2​

Cet exemple vérifie que tous les éléments de la collection sont de type réel :

var $c : Collection
var $b : Boolean
var $f : 4D.Function

$f:=Formula(Value type($1.value)=$2
$c:=New collection
$c.push(5;3;1;4;6;2)
$b:=$c.every($f;Is real) //$b=true
$c:=$c.push(New object("name";"Cleveland";"zc";35049))
$c:=$c.push(New object("name";"Blountsville";"zc";35031))
$b:=$c.every($f;Is real) //$b=false

.extract()​

Historique
ReleaseModifications
v16 R6Ajout

.extract( propertyPath : Text { ; option : Integer } ) : Collection
.extract( propertyPath : Text ; targetPath : Text { ;...propertyPathOrTargetPathN : Text } ) : Collection

ParamètresTypeDescription
propertyPathText->Chemin de propriété d'objet dont les valeurs doivent être extraites dans la nouvelle collection
targetpathText->Chemin ou nom de propriété cible
optionInteger->ck keep null : inclure les propriétés null dans la collection retournée (ignorées par défaut). Paramètre ignoré si targetPath est passé.
RésultatCollection<-Nouvelle collection contenant les valeurs extraites

Description​

La fonction .extract() crée et renvoie une nouvelle collection contenant les valeurs propertyPath extraites de la collection originale d'objets.

Cette fonction ne modifie pas la collection d'origine.

Le contenu de la collection retournée dépend du paramètre targetPath :

  • Si le paramètre targetPath est omis, .extract() remplit la nouvelle collection avec les valeurs de propertyPath de la collection d'origine.

    Par défaut, les éléments pour lesquels propertyPath est null ou indéfini sont ignorés dans la collection résultante. Vous pouvez passer la constante ck keep null dans le paramètre option pour inclure ces valeurs en tant qu'éléments null dans la collection retournée.

  • Si un ou plusieurs paramètre(s) targetPath sont passés (correspondant à un ou plusieurs paramètre(s) propertyPath), .extract() remplit la nouvelle collection avec les propriétés propertyPath et chaque élément de la nouvelle collection est un objet avec les propriétés targetPath remplies avec les propriétés propertyPath correspondantes. Les valeurs null sont conservées (le paramètre option est ignoré avec cette syntaxe).

Exemple 1​

var $c : Collection
$c:=New collection
$c.push(New object("name";"Cleveland"))
$c.push(New object("zip";5321))
$c.push(New object("name";"Blountsville"))
$c.push(42)
$c2:=$c.extract("name") // $c2=[Cleveland,Blountsville]
$c2:=$c.extract("name";ck keep null) //$c2=[Cleveland,null,Blountsville,null]

Exemple 2​

var $c : Collection
$c:=New collection
$c.push(New object("zc";35060))
$c.push(New object("name";Null;"zc";35049))
$c.push(New object("name";"Cleveland";"zc";35049))
$c.push(New object("name";"Blountsville";"zc";35031))
$c.push(New object("name";"Adger";"zc";35006))
$c.push(New object("name";"Clanton";"zc";35046))
$c.push(New object("name";"Clanton";"zc";35045))
$c2:=$c.extract("name";"City") //$c2=[{City:null},{City:Cleveland},{City:Blountsville},{City:Adger},{City:Clanton},{City:Clanton}]
$c2:=$c.extract("name";"City";"zc";"Zip") //$c2=[{Zip:35060},{City:null,Zip:35049},{City:Cleveland,Zip:35049},{City:Blountsville,Zip:35031},{City:Adger,Zip:35006},{City:Clanton,Zip:35046},{City:Clanton,Zip:35045}]

.fill()​

Historique
ReleaseModifications
v16 R6Ajout

.fill( value : any ) : Collection
.fill( value : any ; startFrom : Integer { ; end : Integer } ) : Collection

ParamètresTypeDescription
valueNumber, Text, Object, Collection, Date, Boolean->Valeur de remplissage
startFromInteger->Indice l'élément de départ (inclus)
endInteger->Indice de fin (non inclus)
Résultatcollection<-Collection d'origine avec valeurs de remplissage

Description​

La fonction .fill() remplit la collection avec la valeur spécifiée, éventuellement de l'index startFrom à l'index end, et renvoie la collection résultante.

Cette fonction modifie la collection d'origine.

  • Si le paramètre startFrom est omis, value est appliquée à tous les éléments de la collection (startFrom=0).
  • Si le paramètre startFrom est passé et end omis, value est appliquée aux éléments de la collection à partir de startFrom jusqu'au dernier élément de la collection (end=length).
  • Si à la fois le paramètre startFrom et end sont passés, value est appliquée aux éléments de la collection à partir de startFrom jusqu'à l'élément end.

En cas d'incohérence, les règles suivantes sont appliquées :

  • Si startFrom < 0, il est recalculé comme startFrom:=startFrom+length (il est considéré comme partant de la fin de la collection). Si la valeur calculée est négative, startFrom est défini à 0.
  • Si end < 0 , il est recalculé comme end:=end+length.
  • Si end < startFrom (valeurs passées ou recalculées), la méthode ne fait rien.

Exemple​

var $c : Collection
$c:=New collection(1;2;3;"Lemon";Null;"";4;5)
$c.fill("2") // $c:=[2,2,2,2,2,2,2,2]
$c.fill("Hello";5) // $c=[2,2,2,2,2,Hello,Hello,Hello]
$c.fill(0;1;5) // $c=[2,0,0,0,0,Hello,Hello,Hello]
$c.fill("world";1;-5) //-5+8=3 -> $c=[2,"world","world",0,0,Hello,Hello,Hello]

.filter()​

Historique
ReleaseModifications
19 R6Prise en charge des formules
v16 R6Ajout

.filter( formula : 4D.Function { ; ...param : any } ) : Collection
.filter( methodName : Text { ; ...param : any } ) : Collection

ParamètresTypeDescription
formula4D.Function->Objet formule
methodNameText->Nom de méthode
paramany->Paramètre(s) à passer à formula ou methodName
RésultatCollection<-Nouvelle collection contenant les éléments filtrés (shallow copy)

Description​

La fonction .filter() retourne une nouvelle collection contenant tous les éléments de la collection d'origine pour lesquels le résultat de la formula ou de la méthode methodName est true. Cette fonction retourne une shallow copy, 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.

Cette fonction ne modifie pas la collection d'origine.

Vous désignez le code de rétroappel (callback) à exécuter pour filtrer les éléments de la collection en utilisant soit :

  • formula (syntaxe recommandée), un objet Formula qui peut encapsuler toute expression exécutable, y compris des fonctions et des méthodes projet;
  • soit methodName, le nom d'une méthode projet (texte).

La callback est appelée avec le(s) paramètre(s) passé(s) dans param (optionnel) et un objet en premier paramètre ($1). La callback peut effectuer n'importe quel test, avec ou sans le(s) paramètre(s) et doit retourner true pour chaque élément remplissant la condition et donc, devant être ajouté à la nouvelle collection.

La callback reçoit les paramètres suivants :

  • dans $1.value : valeur de l'élément à évaluer
  • dans $2 : param
  • dans $N... : paramN...

Elle peut définir le(s) paramètre(s) suivant(s) :

  • $1.result (Booléen) : true si la valeur de l'élément correspond à la condition de filtre et doit être conservée, false sinon.
  • $1.stop (booléen, optionnel) : true pour stopper le rétroappel de la méthode. La valeur retournée est la dernière calculée.
note

Lorsque vous utilisez methodName comme callback, et si la méthode ne renvoie aucune valeur, .filter() recherchera la propriété $1.result que vous devez définir à true pour chaque élément remplissant la condition.

Exemple 1​

Vous voulez obtenir la collection des éléments de type texte dont la longueur est inférieure à 6 :

var $col;$colNew : Collection
$col:=New collection("hello";"world";"red horse";66;"tim";"san jose";"miami")
$colNew:=$col.filter(Formula((Value type($1.value)=Is text) && (Length($1.value)<$2)); 6)
//$colNew=["hello","world","tim","miami"]

Exemple 2​

Vous voulez filtrer les éléments de la collection en fonction de leur type :

var $c;$c2;$c3 : Collection
var $f : 4D.Function

$f:=Formula(OB Get type($1;"value")=$2)
$c:=New collection(5;3;1;4;6;2)
$c.push(New object("name";"Cleveland";"zc";35049))
$c.push(New object("name";"Blountsville";"zc";35031))
$c2:=$c.filter($f;Is real) // $c2=[5,3,1,4,6,2]
$c3:=$c.filter($f;Is object)
// $c3=[{name:Cleveland,zc:35049},{name:Blountsville,zc:35031}]

Exemple 3​

La fonction .filter() permet de comparer deux collections et d'en extraire les différences :

var $c1:= New collection(12; 45; 78; 99; 156)
var $c2:=New collection(12; 78; 99) //il manque deux éléments
var $diff:=$c1.filter(Formula(Not($c2.includes($1.value))))
// $diff=[45, 156]

.find()​

Historique
ReleaseModifications
19 R6Prise en charge des formules
v16 R6Ajout

.find( { startFrom : Integer ; } formula : 4D.Function { ; ...param : any } ) : any
.find( { startFrom : Integer ; } methodName : Text { ; ...param : any } ) : any

ParamètresTypeDescription
startFromInteger->Indice d'élément à partir duquel débuter la recherche
formula4D.Function->Objet formule
methodNameText->Nom de méthode
paramany->Paramètre(s) à passer à formula ou methodName
Résultatany<-Première valeur trouvée (Undefined si non trouvée)

Description​

La fonction .find() retourne la première valeur dans la collection pour laquelle le résultat de formula ou de methodName, appliqué à chaque élément, retourne true.

Cette fonction ne modifie pas la collection d'origine.

Vous désignez le code de rétroappel (callback) à exécuter pour évaluer les éléments de la collection en utilisant soit :

  • formula (syntaxe recommandée), un objet Formula qui peut encapsuler toute expression exécutable, y compris des fonctions et des méthodes projet;
  • soit methodName, le nom d'une méthode projet (texte).

La callback est appelée avec le(s) paramètre(s) passé(s) dans param (facultatif). La callback est appelée avec le(s) paramètre(s) passé(s) dans param (facultatif). Elle reçoit un Objet en premier paramètre ($1).

La callback reçoit les paramètres suivants :

  • dans $1.value : valeur de l'élément à évaluer
  • dans $2 : param
  • dans $N... : paramN...

Elle peut définir le(s) paramètre(s) suivant(s) :

  • (obligatoire si vous avez utilisé une méthode) $1.result (Boolean) : true si la valeur de l'élément correspond à la condition de recherche, false sinon.
  • $1.stop (booléen, optionnel) : true pour stopper le rétroappel de la méthode. La valeur retournée est la dernière calculée.

Par défaut, .find() effectue une recherche dans la totalité de la collection. Optionnellement, vous pouvez passer dans startFrom l'index de l'élément à partir duquel commencer la recherche.

  • Si startFrom >= la longueur de la collection, -1 est retourné, ce qui signifie que la recherche n'est pas effectuée.
  • Si startFrom < 0, la fin de la collection est considérée comme point de départ du calcul de la position (startFrom:=startFrom+length). Note: Même si startFrom est négatif, la collection est toujours recherchée de gauche à droite.
  • Si startFrom = 0, l'ensemble de la collection est évalué (défaut).

Exemple 1​

Vous souhaitez obtenir le premier élément de texte dont la taille est inférieure à 5 caractères :

var $col : Collection
$col:=New collection("hello";"world";4;"red horse";"tim";"san jose")
$value:=$col.find(Formula((Value type($1.value)=Is text) && (Length($1.value)<$2)); 5) //$value="tim"

Exemple 2​

Vous souhaitez trouver un nom de ville dans une collection :

var $c : Collection
var $c2 : Object
$c:=New collection
$c.push(New object("name"; "Cleveland"; "zc"; 35049))
$c.push(New object("name"; "Blountsville"; "zc"; 35031))
$c.push(New object("name"; "Adger"; "zc"; 35006))
$c.push(New object("name"; "Clanton"; "zc"; 35046))
$c.push(New object("name"; "Clanton"; "zc"; 35045))

$c2:=$c.find(Formula($1.value.name=$2); "Clanton") //$c2={name:Clanton,zc:35046}

.findIndex()​

Historique
ReleaseModifications
19 R6Prise en charge des formules
v16 R6Ajout

.findIndex( { startFrom : Integer ; } formula : 4D.Function { ; ...param : any } ) : Integer
.findIndex( { startFrom : Integer ; } methodName : Text { ; ...param : any } ) : Integer

ParamètresTypeDescription
startFromInteger->Indice d'élément à partir duquel débuter la recherche
formula4D.Function->Objet formule
methodNameText->Nom de méthode
paramany->Paramètre(s) à passer à formula ou methodName
RésultatInteger<-Numéro du premier élément trouvé (-1 si non trouvé)

Description​

La fonction .findIndex() retourne l'indice, dans la collection, du premier élément pour lequel formula ou methodName, appliqué à chaque élément, retourne true.

Cette fonction ne modifie pas la collection d'origine.

Vous désignez le code de rétroappel (callback) à exécuter pour évaluer les éléments de la collection en utilisant soit :

  • formula (syntaxe recommandée), un objet Formula qui peut encapsuler toute expression exécutable, y compris des fonctions et des méthodes projet;
  • methodName, le nom d'une méthode projet (texte).

La callback est appelée avec le(s) paramètre(s) passé(s) dans param (facultatif). La callback est appelée avec le(s) paramètre(s) passé(s) dans param (facultatif). Elle reçoit un Objet en premier paramètre ($1).

La callback reçoit les paramètres suivants :

  • dans $1.value : valeur de l'élément à évaluer
  • dans $2 : param
  • dans $N... : paramN...

Elle peut définir le(s) paramètre(s) suivant(s) :

  • (obligatoire si vous avez utilisé une méthode) $1.result (Boolean) : true si la valeur de l'élément correspond à la condition de recherche, false sinon.
  • $1.stop (booléen, optionnel) : true pour stopper le rétroappel de la méthode. La valeur retournée est la dernière calculée.

Par défaut, .findIndex() effectue une recherche dans la totalité de la collection. Optionnellement, vous pouvez passer dans startFrom l'index de l'élément à partir duquel commencer la recherche.

  • Si startFrom >= la longueur de la collection, -1 est retourné, ce qui signifie que la recherche n'est pas effectuée.
  • Si startFrom < 0, la fin de la collection est considérée comme point de départ du calcul de la position (startFrom:=startFrom+length). Note: Même si startFrom est négatif, la collection est toujours recherchée de gauche à droite.
  • Si startFrom = 0, l'ensemble de la collection est évalué (défaut).

Exemple​

Vous souhaitez trouver la position du premier nom de ville dans la collection :

var $c : Collection
var $val2;$val3 : Integer
$c:=New collection
$c.push(New object("name";"Cleveland";"zc";35049))
$c.push(New object("name";"Blountsville";"zc";35031))
$c.push(New object("name";"Adger";"zc";35006))
$c.push(New object("name";"Clanton";"zc";35046))
$c.push(New object("name";"Clanton";"zc";35045))
$val2:=$c.findIndex(Formula($1.value.name=$2);"Clanton") // $val2=3
$val3:=$c.findIndex($val2+1;Formula($1.value.name=$2);"Clanton") //$val3=4

.first()​

Historique
ReleaseModifications
20Ajout

.first() : any

ParamètresTypeDescription
Résultatany<-Premier élément de collection

Description​

La fonction .first() retourne le premier élément de la collection.

Cette fonction ne modifie pas la collection d'origine.

La fonction renvoie Undefined si la collection est vide.

Exemple​

var $col; $emptyCol : Collection
var $first : Variant
$col:=New collection(10; 20; 30; "hello"; 50)
$first:=$col.first() // 10

$emptyCol:=New collection() //vide
// $first:=$emptyCol[0] //retournerait une erreur
$first:=$emptyCol.first() // retourne Undefined

.flat()​

Historique
ReleaseModifications
20Ajout

.flat( { depth : Integer } ) : Collection

ParamètresTypeDescription
depthInteger->La profondeur à laquelle une structure de collection imbriquée doit être mise à plat. Par défaut=1
RésultatCollection<-Collection mise à plat

Description​

La fonction .flat() crée une nouvelle collection avec tous les éléments des sous-collections concaténés de manière récursive jusqu'à la depth spécifiée.

Par défaut, si le paramètre depth est omis, seul le premier niveau de la structure de la collection imbriquée sera mis à plat.

Cette fonction ne modifie pas la collection d'origine.

Exemple​

$col:=New collection(1; 2; New collection(3; 4))
$col.flat()
// [1, 2, 3, 4]

$col:=New collection(1; 2; New collection(3; 4; New collection(5; 6)))
$col.flat()
// [1, 2, 3, 4, [5, 6]]

$col:=New collection(1; 2; New collection(3; 4; New collection(5; 6)))
$col.flat(2)
// [1, 2, 3, 4, 5, 6]

$col:=New collection(1; 2; New collection(3; 4; 5; 6; New collection(7; 8; New collection(9; 10))))
$col.flat(MAXLONG)
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

.flatMap()​

Historique
ReleaseModifications
20Ajout

.flatMap( formula : 4D.Function { ; ...param : any } ) : Collection
.flatMap( methodName : Text { ; ...param : any } ) : Collection

ParamètresTypeDescription
formula4D.Function->Objet formule
methodNameText->Nom de méthode
paramany->Paramètre(s) à passer à formula ou methodName
RésultatCollection<-Collection de valeurs transformées et mises à plat sur une profondeur de 1

Description​

La fonction .flatMap() crée une nouvelle collection basée sur le résultat de l'appel de la fonction 4D formula ou de la méthode methodName sur chaque élément de la collection d'origine et mise à plat sur une profondeur de 1. Optionnellement, vous pouvez passer des paramètres à formula ou methodName en utilisant le(s) paramètre(s) param.

Cette fonction est identique à un appel à map() suivi d'un appel à flat() de profondeur 1.

Cette fonction ne modifie pas la collection d'origine.

Vous désignez le code de rétroappel (callback) à exécuter pour évaluer les éléments de la collection en utilisant soit :

  • formula (syntaxe recommandée), un objet Formula qui peut encapsuler toute expression exécutable, y compris des fonctions et des méthodes projet;
  • soit methodName, le nom d'une méthode projet (texte).

La callback est appelée avec le(s) paramètre(s) passé(s) dans param (facultatif). La callback est appelée avec le(s) paramètre(s) passés dans param (facultatif). Elle reçoit un Objet en premier paramètre ($1).

La callback reçoit les paramètres suivants :

  • dans $1.value : valeur de l'élément à évaluer
  • dans $2 : param
  • dans $N... : paramN...

Elle peut définir le(s) paramètre(s) suivant(s) :

  • (obligatoire si vous avez utilisé une méthode) $1.result (tout type) : nouvelle valeur transformée à ajouter à la collection résultante
  • $1.stop (booléen, optionnel) : true pour stopper le rétroappel de la méthode. La valeur retournée est la dernière calculée.

Exemple 1​

var $col ; $result : Collection
$col:=New collection(1; 2; 3; 4)

$result:=$col.map(Formula(New collection($1.value*2)))
// [[2],[4],[6],[8]]

$result:=$col.flatMap(Formula(New collection($1.value*2)))
// [2,4,6,8]

Exemple 2​

var $col; $result : Collection
$col:=New collection("Hello how"; ""; "are you ?")

$result:=$col.map(Formula(Split string($1.value; " ")))
// [["Hello", "how"], [], ["are", "you", "?"]]

$result:=$col.flatMap(Formula(Split string($1.value; " ")))
// ["Hello", "how", "are", "you", "?"]

Exemple 3​

Vous souhaitez calculer le pourcentage de chaque valeur de la collection par rapport au total :

var $c; $c2 : Collection
var $f : 4D.Function
$c:=New collection(1; 4; 9; 10; 20)
$f:=Formula(New collection($1.value;Round(($1.value/$2)*100; 2)))
$c2:=$c.flatMap($f; $c.sum())
//$c2=[1, 2.27, 4, 9.09,9, 20.45,10, 22.73, 20, 45.45]

.includes()​

Historique
ReleaseModifications
20Ajout

.includes( toSearch : expression { ; startFrom : Integer } ) : Boolean

ParamètresTypeDescription
toSearchexpression->Expression à rechercher dans la collection
startFromInteger->Indice d'élément à partir duquel débuter la recherche
RésultatBoolean<-True si toSearch est trouvé dans la collection

Description​

La fonction .includes() retourne True si l'expression toSearch est trouvée parmi les éléments de la collection, sinon False.

Cette fonction ne modifie pas la collection d'origine.

Dans toSearch, passez l'expression à trouver dans la collection. Vous pouvez passer :

  • une valeur scalaire (texte, numérique, booléen, date),
  • la valeur null,
  • une référence d'objet ou de collection.

toSearch doit correspondre exactement à l'élément à trouver (les mêmes règles que l'opérateur d'égalité du type de données sont appliquées).

Optionnellement, vous pouvez passer l'indice de la collection à partir duquel démarrer la recherche dans startFrom.

  • Si startFrom >= la longueur de la collection, False est retourné, ce qui signifie que la recherche n'est pas effectuée.
  • Si startFrom < 0, la fin de la collection est considérée comme point de départ du calcul de la position (startFrom:=startFrom+length). Attention : N'oubliez pas que la numérotation des éléments de collection débute à 0.
  • Si startFrom = 0, l'ensemble de la collection est évalué (défaut).

Exemple​

var $col : Collection
var $in : Boolean
var $obj : Object
$obj:=New object("value"; 10)
$col:=New collection(1;2;"Henry";5;3;"Albert";6;4;"Alan";5;$obj)
$in:=$col.includes(3) //True
$in:=$col.includes(5;6) //True
$in:=$col.includes("al@") //True
$in:=$col.includes("Hello") //False
$in:=$col.includes($obj) //True
$in:=$col.includes(New object("value"; 10)) //False

.indexOf()​

Historique
ReleaseModifications
v16 R6Ajout

.indexOf( toSearch : expression { ; startFrom : Integer } ) : Integer

ParamètresTypeDescription
toSearchexpression->Expression à rechercher dans la collection
startFromInteger->Indice d'élément à partir duquel débuter la recherche
RésultatInteger<-Indice de la première occurrence de toSearch dans la collection, -1 si non trouvée

Description​

La fonction .indexOf() recherche l'expression toSearch parmi les éléments de la collection et retourne l'indice de la première occurrence trouvée, ou -1 si aucune occurrence n'a été trouvée.

Cette fonction ne modifie pas la collection d'origine.

Dans toSearch, passez l'expression à trouver dans la collection. Vous pouvez passer :

  • une valeur scalaire (texte, numérique, booléen, date),
  • la valeur null,
  • une référence d'objet ou de collection.

toSearch doit correspondre exactement à l'élément à trouver (les mêmes règles que l'opérateur d'égalité du type de données sont appliquées).

Optionnellement, vous pouvez passer l'indice de la collection à partir duquel démarrer la recherche dans startFrom.

  • Si startFrom >= la longueur de la collection, -1 est retourné, ce qui signifie que la recherche n'est pas effectuée.
  • Si startFrom < 0, la fin de la collection est considérée comme point de départ du calcul de la position (startFrom:=startFrom+length). Note: Même si startFrom est négatif, la collection est toujours recherchée de gauche à droite.
  • Si startFrom = 0, l'ensemble de la collection est évalué (défaut).

Exemple​

var $col : Collection
var $i : Integer
$col:=New collection(1;2;"Henry";5;3;"Albert";6;4;"Alan";5)
$i:=$col.indexOf(3) //$i=4
$i:=$col.indexOf(5;5) //$i=9
$i:=$col.indexOf("al@") //$i=5
$i:=$col.indexOf("Hello") //$i=-1

.indices()​

Historique
ReleaseModifications
v16 R6Ajout

.indices( queryString : Text { ; ...value : any } ) : Collection

ParamètresTypeDescription
queryStringText->Critère(s) de recherche
valueany->Valeur(s) à comparer lors de l'utilisation de paramètre(s) dans la chaîne
RésultatCollection<-Indice(s) d'élément(s) de la collection répondant aux critères de queryString

Description​

La fonction .indices() fonctionne exactement comme la fonction .query() mais renvoie les indices, dans la collection d'origine, des éléments de la collection d'objets qui correspondent aux conditions de recherche queryString, et non les éléments eux-mêmes. Les positions sont retournées dans un ordre croissant.

Cette fonction ne modifie pas la collection d'origine.

Le paramètre queryString doit respecter la syntaxe suivante :

propertyPath comparator value {logicalOperator propertyPath comparator value}

Pour une description détaillée de la construction de recherches à l'aide des paramètres queryString et value veuillez vous reporter à la description de la fonction dataclass.query().

Exemple​

var $c; $icol : Collection
$c:=New collection
$c.push(New object("name";"Cleveland";"zc";35049))
$c.push(New object("name";"Blountsville";"zc";35031))

$c.push(New object("name";"Adger";"zc";35006))
$c.push(New object("name";"Clanton";"zc";35046))
$c.push(New object("name";"Clanton";"zc";35045))
$icol:=$c.indices("name = :1";"Cleveland") // $icol=[0]
$icol:=$c.indices("zc > 35040") // $icol=[0,3,4]

.insert()​

Historique
ReleaseModifications
v16 R6Ajout

.insert( index : Integer ; element : any ) : Collection

ParamètresTypeDescription
indexInteger->Où insérer l'élément
elementany->Elément à insérer dans la collection
RésultatCollection<-Collection d'origine incluant l'élément inséré

Description​

La fonction .insert() insère element à la position index spécifiée dans l'instance de collection et renvoie la collection modifiée.

Cette fonction modifie la collection d'origine.

Dans index, passez le numéro de l'élément après lequel vous souhaitez que le paramètre element soit inséré.

Attention : N'oubliez pas que la numérotation des éléments de collection débute à 0.

  • Si index > la longueur de la collection, l'index de départ réel sera fixé à la longueur de la collection.
  • Si index < 0, il est recalculé comme index:=index+length (il est considéré comme le décalage par rapport à la fin de la collection).
  • Si la valeur recalculée est négative, index prend la valeur 0.

Vous pouvez passer tout type d'élément accepté par les collections, y compris une autre collection.

Exemple​

var $col : Collection
$col:=New collection("a";"b";"c";"d") //$col=["a","b","c","d"]
$col.insert(2;"X") //$col=["a","b","X","c","d"]
$col.insert(-2;"Y") //$col=["a","b","X","Y","c","d"]
$col.insert(-10;"Hi") //$col=["Hi","a","b","X","Y","c","d"]

.join()​

Historique
ReleaseModifications
v16 R6Ajout

.join( delimiter : Text { ; option : Integer } ) : Text

ParamètresTypeDescription
delimiterText->Séparateur à utiliser entre les éléments
optionInteger->ck ignore null or empty : ignorer les chaînes null ou vides dans le résultat
RésultatText<-Chaîne contenant tous les éléments de la collection, séparés par delimiter

Description​

La fonction .join() convertit tous les éléments de la collection en chaînes et les concatène en utilisant la chaîne delimiter spécifiée comme séparateur.

Cette fonction ne modifie pas la collection d'origine.

Par défaut, les éléments null ou vides de la collection sont inclus dans la chaîne résultante. Passez la constante ck ignore null or empty dans le paramètre option si vous souhaitez les exclure de la chaîne résultante.

Exemple​

var $c : Collection
var $t1;$t2 : Text
$c:=New collection(1;2;3;"Paris";Null;"";4;5)
$t1:=$c.join("|") //1|2|3|Paris|null||4|5
$t2:=$c.join("|";ck ignore null or empty) //1|2|3|Paris|4|5

.last()​

Historique
ReleaseModifications
20Ajout

.last() : any

ParamètresTypeDescription
Résultatany<-Dernier élément de collection

Description​

La fonction .last() renvoie le dernier élément de la collection.

Cette fonction ne modifie pas la collection d'origine.

La fonction renvoie Undefined si la collection est vide.

Exemple​

var $col; $emptyCol : Collection
var $last : Variant
$col:=New collection(10; 20; 30; "hello"; 50)
$last:=$col.last() // 50

$emptyCol:=New collection() //vide
// $last:=$emptyCol[$emptyCol.length-1] //retourne une erreur
$last:=$emptyCol.last() // retourne Undefined

.lastIndexOf()​

Historique
ReleaseModifications
v16 R6Ajout

.lastIndexOf( toSearch : expression { ; startFrom : Integer } ) : Integer

ParamètresTypeDescription
toSearchexpression->Elément à chercher dans la collection
startFromInteger->Indice d'élément à partir duquel débuter la recherche
RésultatInteger<-Numéro de la dernière occurrence de toSearch dans la collection, -1 si non trouvé

Description​

La fonction .lastIndexOf() recherche l'expression toSearch parmi les éléments de la collection et renvoie l'indice de la dernière occurrence, ou -1 si elle n'a pas été trouvée.

Cette fonction ne modifie pas la collection d'origine.

Dans toSearch, passez l'expression à trouver dans la collection. Vous pouvez passer :

  • une valeur scalaire (texte, numérique, booléen, date),
  • la valeur null,
  • une référence d'objet ou de collection.

toSearch doit correspondre exactement à l'élément recherché (les mêmes règles que pour l'opérateur d'égalité sont appliquées).

Optionnellement, vous pouvez passer le numéro de l'élément auquel démarrer la recherche inversée dans startFrom.

  • Si startFrom >= taille de la collection (coll.length-1), l'ensemble de la collection est évalué (défaut).
  • Si startFrom < 0, il est recalculé comme startFrom:=startFrom+length (il est considéré comme partant de la fin de la collection). Si la position calculée est négative, -1 est retourné (la collection n'est pas évaluée). Note : Même si startFrom est négatif, la recherche est effectuée de la droite vers la gauche.
  • Si startFrom = 0, -1 est retourné, ce qui signifie que la recherche n'est pas effectuée.

Exemple​

var $col : Collection
var $pos1;$pos2;$pos3;$pos4;$pos5 : Integer
$col:=Split string("a,b,c,d,e,f,g,h,i,j,e,k,e";",") //$col.length=13
$pos1:=$col.lastIndexOf("e") //retourne 12
$pos2:=$col.lastIndexOf("e";6) //retourne 4
$pos3:=$col.lastIndexOf("e";15) //retourne 12
$pos4:=$col.lastIndexOf("e";-2) //retourne 10
$pos5:=$col.lastIndexOf("x") //retourne -1

.length​

Historique
ReleaseModifications
v16 R5Ajout

.length : Integer

Description​

La propriété .length renvoie le nombre d'éléments de la collection.

La propriété .length est initialisée à la création de la collection. Elle est automatiquement mise à jour en cas d'ajout ou de suppression d'éléments. Cette propriété est en lecture seulement (vous ne pouvez pas l'utiliser pour modifier la taille de la collection).

Exemple​

var $col : Collection //$col.length est initialisée à 0
$col:=New collection("one";"two";"three") //$col.length est mise à jour et vaut 3
$col[4]:="five" //$col.length vaut 5
$vSize:=$col.remove(0;3).length //$vSize=2

.map()​

Historique
ReleaseModifications
19 R6Prise en charge des formules
v16 R6Ajout

.map( formula : 4D.Function { ; ...param : any } ) : Collection
.map( methodName : Text { ; ...param : any } ) : Collection

ParamètresTypeDescription
formula4D.Function->Objet formule
methodNameText->Nom de méthode
paramany->Paramètre(s) à passer à formula ou methodName
RésultatCollection<-Collection de valeurs transformées

Description​

La fonction .map() crée une nouvelle collection basée sur le résultat de l'appel de la fonction 4D formula ou de la méthode methodName sur chaque élément de la collection d'origine. Optionnellement, vous pouvez passer des paramètres à formula ou methodName en utilisant le(s) paramètre(s) param. .map() renvoie toujours une collection de la même taille que la collection originale, sauf si $1.stop a été utilisé (voir ci-dessous).

Cette fonction ne modifie pas la collection d'origine.

Vous désignez le code de rétroappel (callback) à exécuter pour évaluer les éléments de la collection en utilisant soit :

  • formula (syntaxe recommandée), un objet Formula qui peut encapsuler toute expression exécutable, y compris des fonctions et des méthodes projet;
  • soit methodName, le nom d'une méthode projet (texte).

La callback est appelée avec le(s) paramètre(s) passé(s) dans param (facultatif). La callback est appelée avec le(s) paramètre(s) passés dans param (facultatif). Elle reçoit un Objet en premier paramètre ($1).

La callback reçoit les paramètres suivants :

  • dans $1.value : valeur de l'élément à évaluer
  • dans $2 : param
  • dans $N... : paramN...

Elle peut définir le(s) paramètre(s) suivant(s) :

  • (obligatoire si vous avez utilisé une méthode) $1.result (tout type) : nouvelle valeur transformée à ajouter à la collection résultante
  • $1.stop (booléen, optionnel) : true pour stopper le rétroappel de la méthode. La valeur retournée est la dernière calculée.

Exemple​

var $c; $c2 : Collection
$c:=New collection(1; 4; 9; 10; 20)
$c2:=$c.map(Formula(Round(($1.value/$2)*100; 2)); $c.sum())
//$c2=[2.27,9.09,20.45,22.73,45.45]

.max()​

Historique
ReleaseModifications
v16 R6Ajout

.max( { propertyPath : Text } ) : any

ParamètresTypeDescription
propertyPathText->Chemin de propriété d'objet à utiliser pour évaluer les valeurs
RésultatBoolean, Text, Number, Collection, Object, Date<-Valeur maximum de la collection

Description​

La fonction .max() renvoie l'élément ayant la valeur la plus élevée dans la collection (le dernier élément de la collection si elle était triée par ordre croissant à l'aide de la fonction .sort()).

Cette fonction ne modifie pas la collection d'origine.

Si la collection contient différents types de valeurs, la fonction .max() renverra la valeur maximale du dernier type d'élément dans l'ordre de la liste des types (voir la description de .sort()).

Si la collection contient des objets, passez le paramètre propertyPath pour indiquer la propriété d'objet dont vous souhaitez obtenir la valeur maximale.

Si la collection est vide, .max() retourne Undefined.

Exemple​

var $col : Collection
$col:=New collection(200;150;55)
$col.push(New object("name";"Smith";"salary";10000))
$col.push(New object("name";"Wesson";"salary";50000))
$col.push(New object("name";"Alabama";"salary";10500))
$max:=$col.max() //{name:Alabama,salary:10500}
$maxSal:=$col.max("salary") //50000
$maxName:=$col.max("name") //"Wesson"

.min()​

Historique
ReleaseModifications
v16 R6Ajout

.min( { propertyPath : Text } ) : any

ParamètresTypeDescription
propertyPathText->Chemin de propriété d'objet à utiliser pour évaluer les valeurs
RésultatBoolean, Text, Number, Collection, Object, Date<-Valeur minimum de la collection

Description​

La fonction .min() renvoie l'élément ayant la plus petite valeur dans la collection (le premier élément de la collection si elle était triée par ordre croissant à l'aide de la fonction .sort()).

Cette fonction ne modifie pas la collection d'origine.

Si la collection contient différents types de valeurs, la fonction .min() renverra la valeur minimale du premier type d'élément dans l'ordre de la liste des types (voir la description de .sort()).

Si la collection contient des objets, passez le paramètre propertyPath pour indiquer la propriété d'objet dont vous souhaitez obtenir la valeur minimum.

Si la collection est vide, .min() retourne Undefined.

Exemple​

var $col : Collection
$col:=New collection(200;150;55)
$col.push(New object("name";"Smith";"salary";10000))
$col.push(New object("name";"Wesson";"salary";50000))
$col.push(New object("name";"Alabama";"salary";10500))
$min:=$col.min() //55
$minSal:=$col.min("salary") //10000
$minName:=$col.min("name") //"Alabama"

.orderBy()​

Historique
ReleaseModifications
v16 R6Ajout

.orderBy( ) : Collection
.orderBy( pathStrings : Text ) : Collection
.orderBy( pathObjects : Collection ) : Collection
.orderBy( ascOrDesc : Integer ) : Collection

ParamètresTypeDescription
pathStringsText->Chemin(s) de propriété(s) à utiliser pour trier la collection
pathObjectsCollection->Collection d'objets critère
ascOrDescInteger->ck ascending ou ck descending (valeurs scalaires)
RésultatCollection<-Copie triée de la collection (shallow copy)

Description​

La fonction .orderBy() renvoie une nouvelle collection contenant tous les éléments de la collection dans l'ordre spécifié.

Cette fonction 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.

Cette fonction ne modifie pas la collection d'origine.

Si vous ne passez aucun paramètre, la fonction classe les valeurs scalaires de la collection dans un ordre croissant (les autres types d'éléments tels que les objets ou les collections sont renvoyés avec un ordre interne). Vous pouvez modifier ce tri automatique par défaut en passant la constante ck ascending ou ck descending dans le paramètre ascOrDesc (voir ci-dessous).

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

  • pathStrings : Texte (formule). Syntaxe : propertyPath1 {desc ou asc}, propertyPath2 {desc ou asc},... (défaut : asc). pathStrings 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é de tri 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.

  • pathObjects : Collection. Vous pouvez ajouter autant d'objets dans la collection pathObjects que nécessaire. Par défaut, les propriétés sont triées par ordre croissant ("descending" est faux). Chaque élément de la collection contient un objet structuré de la manière suivante :

{
"propertyPath": string,
"descending": boolean

}
  • ascOrDesc : Integer. Passez une des constantes suivantes du thème Objets et collections :

    ConstanteTypeValeurCommentaire
    ck ascendingInteger0Les éléments sont triés par ordre croissant (défaut)
    ck descendingInteger1Les é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 renvoyés dans l'ordre suivant :

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

Exemple 1​

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

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

Exemple 2​

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

var $c; $c2 : Collection
$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")

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

var $c; $c2 : Collection
$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")

Exemple 3​

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

var $crit; $c; $c2 : COllection
$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)

Tri avec un chemin de propriété :

var $crit; $c; $c2 : Collection
$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)

.orderByMethod()​

Historique
ReleaseModifications
19 R6Prise en charge des formules
v16 R6Ajout

.orderByMethod( formula : 4D.Function { ; ...extraParam : expression } ) : Collection
.orderByMethod( methodName : Text { ; ...extraParam : expression } ) : Collection

ParamètresTypeDescription
formula4D.Function->Objet formule
methodNameText->Nom de méthode
extraParamany->Paramètre(s) à passer
RésultatCollection<-Copie triée de la collection (shallow copy)

Description​

La fonction .orderByMethod() renvoie une nouvelle collection contenant tous les éléments de la collection dans l'ordre défini par la fonction 4D formula ou la méthode methodName.

Cette fonction 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.

Cette fonction ne modifie pas la collection d'origine.

Vous désignez le code de rétroappel (callback) à exécuter pour évaluer les éléments de la collection en utilisant soit :

  • formula (syntaxe recommandée), un objet Formula qui peut encapsuler toute expression exécutable, y compris des fonctions et des méthodes projet;

  • soit methodName, le nom d'une méthode projet (texte).

Dans la callback, passez votre code qui compare deux valeurs et retourne true si la première valeur est inférieure à la seconde valeur. Vous pouvez fournir des paramètres extraParam à la callback si nécessaire.

La callback reçoit les paramètres suivants :

  • $1 (object), où :
    • $1.value (tout type) : valeur du premier élément à comparer
    • $1.value2 (tout type) : valeur du second élément à comparer
    • $2...$N (tout type) : paramètres supplémentaires (extraParam)

Si vous avez utilisé une méthode, elle doit définir le paramètre suivant :

  • $1.result (booléen): true si $1.value < $1.value2, false sinon

Exemple 1​

Vous souhaitez trier une collection de chaînes contenant des nombres par valeur plutôt que par ordre alphabétique :

var $c; $c2; $c3 : Collection
$c:=Newcollection
$c.push("33" ; "4" ; "1111" ; "222")
$c2:=$c.orderBy() //$c2=["1111", "222", "33", "4"], ordre alphabétique
$c3:=$c.orderByMethod(Formula(Num($1.value)<Num($1.value2))) // $c3=["4", "33", "222", "1111"]

Exemple 2​

Vous souhaitez trier une collection de chaînes de caractères en fonction de leur longueur :

var $fruits; $c2 : Collection
$fruits:=New collection("Orange";"Apple";"Grape";"pear";"Banana";"fig";"Blackberry";"Passion fruit")
$c2:=$fruits.orderByMethod(Formula(Length(String($1.value))>Length(String($1.value2))))
//$c2=[Passion fruit,Blackberry,Orange,Banana,Apple,Grape,pear,fig]

Exemple 3​

Vous souhaitez trier une collection par code de caractère ou par langage :

var $strings1; $strings2 : Collection
$strings1:=New collection("Alpha";"Charlie";"alpha";"bravo";"Bravo";"charlie")

//Utilisation du code de caractère :
$strings2:=$strings1.orderByMethod(Formula(sortCollection);sk char codes)
// résultat : ["Alpha","Bravo","Charlie","alpha","bravo","charlie"]

//Utilisation du langage :
$strings2:=$strings1.orderByMethod(Formula(sortCollection);sk strict)
// résultat : ["alpha","Alpha","bravo","Bravo","charlie","Charlie"]

La méthode sortCollection :

**Tri synchronisé à un niveau**

.pop()​

Historique
ReleaseModifications
v16 R6Ajout

.pop() : any

ParamètresTypeDescription
Résultatany<-Dernier élément de collection

Description​

La fonction .pop() supprime le dernier élément de la collection et le renvoie comme résultat de la fonction.

Cette fonction modifie la collection d'origine.

Lorsqu'elle est appliquée à une collection vide, .pop() retourne undefined.

Exemple​

.pop(), combinée à .push(), peut être utilisée pour implémenter une fonctionnalité first-in last-out de traitement de données empilées :

var $stack : Collection
$stack:=New collection //$stack=[]
$stack.push(1;2) //$stack=[1,2]
$stack.pop() //$stack=[1] retourne 2
$stack.push(New collection(4;5)) //$stack=[[1,[4,5]]
$stack.pop() //$stack=[1] retourne [4,5]
$stack.pop() //$stack=[] retourne 1

.push()​

Historique
ReleaseModifications
v16 R6Ajout

.push( element : any { ;...elementN } ) : Collection

ParamètresTypeDescription
elementMixed->Élément(s) à ajouter à la collection
RésultatCollection<-Collection d'origine incluant les éléments ajoutés

Description​

La fonction .push() ajoute un ou plusieurs element(s) à la fin de l'instance de collection et renvoie la collection modifiée.

Cette fonction modifie la collection d'origine.

Exemple 1​

var $col : Collection
$col:=New collection(1;2) //$col=[1,2]
$col.push(3) //$col=[1,2,3]
$col.push(6;New object("firstname";"John";"lastname";"Smith"))
//$col=[1,2,3,6,{firstname:John,lastname:Smith}

Exemple 2​

Vous souhaitez trier la collection obtenue :

var $col; $sortedCol : Collection
$col:=New collection(5;3;9) //$col=[5,3,9]
$sortedCol:=$col.push(7;50).sort()
//$col=[5,3,9,7,50]
//$sortedCol=[3,5,7,9,50]

.query()​

Historique
ReleaseModifications
17 R5Prise en charge de querySettings
v16 R6Ajout

.query( queryString : Text ; ...value : any ) : Collection
.query( queryString : Text ; querySettings : Object ) : Collection

ParamètresTypeDescription
queryStringText->Critère(s) de recherche
valueMixed->Valeur(s) à comparer lors de l'utilisation de paramètre(s) dans la chaîne
querySettingsObject->Options de requête : paramètres, attributs
RésultatCollection<-Indice(s) d'élément(s) de la collection répondant au(x) critère(s) de recherche

Description​

La fonction .query() renvoie tous les éléments d'une collection d'objets qui correspondent aux conditions de recherche définies par queryString et (éventuellement) value ou querySettings. Si la collection d'origine est une collection partagée, la collection retournée est également une collection partagée.

Cette fonction ne modifie pas la collection d'origine.

Le paramètre queryString doit respecter la syntaxe suivante :

propertyPath comparator value {logicalOperator propertyPath comparator value}

For detailed information on how to build a query using queryString, value and querySettings parameters, please refer to the dataClass.query() function description.

Formulas are not supported by the collection.query() function, neither in the queryString parameter nor as formula object parameter.

Exemple 1​

var $c; $c2; $c3 : Collection
$c:=New collection
$c.push(New object("name";"Cleveland";"zc";35049))
$c.push(New object("name";"Blountsville";"zc";35031))
$c.push(New object("name";"Adger";"zc";35006))
$c.push(New object("name";"Clanton";"zc";35046))
$c.push(New object("name";"Clanton";"zc";35045))
$c2:=$c.query("name = :1";"Cleveland") //$c2=[{name:Cleveland,zc:35049}]
$c3:=$c.query("zc > 35040") //$c3=[{name:Cleveland,zc:35049},{name:Clanton,zc:35046},{name:Clanton,zc:35045}]

Exemple 2​

var $c : Collection
$c:=New collection
$c.push(New object("name";"Smith";"dateHired";!22-05-2002!;"age";45))
$c.push(New object("name";"Wesson";"dateHired";!30-11-2017!))
$c.push(New object("name";"Winch";"dateHired";!16-05-2018!;"age";36))

$c.push(New object("name";"Sterling";"dateHired";!10-5-1999!;"age";Null))
$c.push(New object("name";"Mark";"dateHired";!01-01-2002!))

Cet exemple renvoie les personnes dont le nom contient "in" :

$col:=$c.query("name = :1";"@in@")
//$col=[{name:Winch...},{name:Sterling...}]

Cet exemple retourne des personnes dont le nom ne commence pas par une chaine dont la valeur provient d'une variable (saisie par l'utilisateur, par exemple) :

$col:=$c.query("name # :1";$aString+"@")
//si $astring="W"
//$col=[{name:Smith...},{name:Sterling...},{name:Mark...}]

Cet exemple retourne des personnes dont l'âge n'est pas connu (propriété définie sur null ou indéfinie) :

$col:=$c.query("age=null") //placeholders non permis avec "null"
//$col=[{name:Wesson...},{name:Sterling...},{name:Mark...}]

Cet exemple retourne des personnes embauchées il y a plus de 90 jours :

$col:=$c.query("dateHired :1";(Current date-90))
//$col=[{name:Smith...},{name:Sterling...},{name:Mark...}] si la date du jour est 01/10/2018

Exemple 3​

Vous trouverez d'autres exemples de recherches dans la page dataClass.query().

.reduce()​

Historique
ReleaseModifications
19 R6Prise en charge des formules
v16 R6Ajout

.reduce( formula : 4D.Function { ; initValue : any { ; ...param : expression }} ) : any
.reduce( methodName : Text { ; initValue : any { ; ...param : expression }} ) : any

ParamètresTypeDescription
formula4D.Function->Objet formule
methodNameText->Nom de méthode
initValueText, Number, Object, Collection, Date, Boolean->Valeur à utiliser comme premier argument du premier appel de formula ou methodName*
paramexpression->Paramètre(s) à passer
RésultatText, Number, Object, Collection, Date, Boolean<-Résultat de la valeur de l'accumulateur

Description​

La fonction .reduce() applique la callback formula ou methodName à un accumulateur et à chaque élément de la collection (de gauche à droite) pour la réduire à une valeur unique.

Cette fonction ne modifie pas la collection d'origine.

Vous désignez le code de rétroappel (callback) à exécuter pour évaluer les éléments de la collection en utilisant soit :

  • formula (syntaxe recommandée), un objet Formula qui peut encapsuler toute expression exécutable, y compris des fonctions et des méthodes projet;
  • soit methodName, le nom d'une méthode projet (texte).

La callback prend chaque élément de la collection et effectue toutes les opérations souhaitées pour accumuler le résultat dans $1.accumulator, qui est retourné dans $1.value.

Vous pouvez passer la valeur pour initialiser l'accumulateur dans initValue. Si elle est omise, $1.accumulator commence par Undefined.

La callback reçoit les paramètres suivants :

  • dans $1.value : valeur d'élément à évaluer
  • dans $2: param
  • dans $N...: paramN...

Elle peut définir le(s) paramètre(s) suivant(s) :

  • $1.accumulator: valeur à modifier par la fonction et qui est initialisée par initValue.
  • $1.stop (booléen, optionnel) : true pour stopper le rétroappel de la méthode. La valeur retournée est la dernière calculée.

Exemple 1​

var $c : Collection
$c:=New collection(5;3;5;1;3;4;4;6;2;2)
$r:=$c.reduce(Formula($1.accumulator=$1.value); 1) //retourne 86400

Exemple 2​

Cet exemple permet de réduire plusieurs éléments de collections en une seule :

var $c;$r : Collection
$c:=New collection
$c.push(New collection(0;1))
$c.push(New collection(2;3))
$c.push(New collection(4;5))
$c.push(New collection(6;7))
$r:=$c.reduce(Formula(Flatten)) //$r=[0,1,2,3,4,5,6,7]

Avec la méthode Flatten suivante :

If($1.accumulator=Null)
$1.accumulator:=New collection
End if
$1.accumulator.combine($1.value)

.reduceRight()​

Historique
ReleaseModifications
20Ajout

.reduceRight( formula : 4D.Function { ; initValue : any { ; ...param : expression }} ) : any
.reduceRight( methodName : Text { ; initValue : any { ; ...param : expression }} ) : any

ParamètresTypeDescription
formula4D.Function->Objet formule
methodNameText->Nom de méthode
initValueText, Number, Object, Collection, Date, Boolean->Valeur à utiliser comme premier argument du premier appel de formula ou methodName*
paramexpression->Paramètre(s) à passer
RésultatText, Number, Object, Collection, Date, Boolean<-Résultat de la valeur de l'accumulateur

Description​

La fonction .reduceRight() applique la callback formula ou methodName à un accumulateur et à chaque élément de la collection (de droite à gauche) pour la réduire à une valeur unique.

Cette fonction ne modifie pas la collection d'origine.

Vous désignez le code de rétroappel (callback) à exécuter pour évaluer les éléments de la collection en utilisant soit :

  • formula (syntaxe recommandée), un objet Formula qui peut encapsuler toute expression exécutable, y compris des fonctions et des méthodes projet;
  • soit methodName, le nom d'une méthode projet (texte).

La callback prend chaque élément de la collection et effectue toutes les opérations souhaitées pour accumuler le résultat dans $1.accumulator, qui est retourné dans $1.value.

Vous pouvez passer la valeur pour initialiser l'accumulateur dans initValue. Si elle est omise, $1.accumulator commence par Undefined.

La callback reçoit les paramètres suivants :

  • dans $1.value : valeur d'élément à évaluer
  • dans $2: param
  • dans $N...: paramN...

Elle peut définir le(s) paramètre(s) suivant(s) :

  • $1.accumulator: valeur à modifier par la fonction et qui est initialisée par initValue.
  • $1.stop (booléen, optionnel) : true pour stopper le rétroappel de la méthode. La valeur retournée est la dernière calculée.

Exemple 1​

var $c : Collection
$c:=New collection(5;3;5;1;3;4;4;6;2;2)
$r:=$c.reduceRight(Formula($1.accumulator=$1.value); 1) //returns 86400


Exemple 2​

Cet exemple permet de réduire plusieurs éléments de collections en une seule :

var $c;$r : Collection
$c:=New collection
$c.push(New collection(0;1))
$c.push(New collection(2;3))
$c.push(New collection(4;5))
$c.push(New collection(6;7))
$r:=$c.reduceRight(Formula(Flatten)) //$r=[6,7,4,5,2,3,0,1]

Avec la méthode Flatten suivante :

//méthode projet Flatten
If($1.accumulator=Null)
$1.accumulator:=New collection
End if
$1.accumulator.combine($1.value)

.remove()​

Historique
ReleaseModifications
v16 R6Ajout

.remove( index : Integer { ; howMany : Integer } ) : Collection

ParamètresTypeDescription
indexInteger->Élément à partir duquel la suppression peut commencer
howManyInteger->Nombre d'éléments à supprimer, ou 1 élément si omis
RésultatCollection<-Collection modifiée ne contenant plus le ou les élément(s) supprimé(s)

Description​

La fonction .remove() supprime un ou plusieurs élément(s) à partir de la position index spécifiée dans la collection et retourne la collection modifiée.

Cette fonction modifie la collection d'origine.

Dans index, passez la position à partir de laquelle vous souhaitez supprimer des éléments de la collection.

Attention : N'oubliez pas que la numérotation des éléments de collection débute à 0. Si startFrom < 0, la fin de la collection est considérée comme point de départ du calcul de la position (startFrom:=startFrom+length).

  • Si index < 0, il est recalculé comme index:=index+length (il est considéré comme le décalage par rapport à la fin de la collection).
  • Si la valeur calculée < 0, index est défini à 0.
  • Si la valeur calculée > la longueur de la collection, index est défini à cette longueur.

Dans howMany, passez le nombre d'éléments à supprimer à partir de index. Si howMany n'est pas spécifié, alors un seul élément est supprimé.

Si vous essayez de supprimer un élément d'une collection vide, la méthode ne fait rien (aucune erreur n'est générée).

Exemple​

var $col : Collection
$col:=New collection("a";"b";"c";"d";"e";"f";"g";"h")
$col.remove(3) // $col=["a","b","c","e","f","g","h"]
$col.remove(3;2) // $col=["a","b","c","g","h"]
$col.remove(-8;1) // $col=["b","c","g","h"]
$col.remove(-3;1) // $col=["b","g","h"]

.resize()​

Historique
ReleaseModifications
v16 R6Ajout

.resize( size : Integer { ; defaultValue : any } ) : Collection

ParamètresTypeDescription
sizeInteger->Nouvelle taille de la collection
defaultValueNumber, Text, Object, Collection, Date, Boolean->Valeur par défaut pour remplir de nouveaux éléments
RésultatCollection<-Collection d'origine redimensionnée

Description​

La fonction .resize() redéfinit la longueur de la collection à partir de la nouvelle taille spécifiée et retourne la collection redimensionnée.

Cette fonction modifie la collection d'origine.

  • Si size < longueur de la collection, les éléments excédentaires sont supprimés de la collection.
  • Si size > longueur de la collection, la longueur de la collection est étendue à size.

Par défaut, les nouveaux éléments sont remplis par des valeurs null. Vous pouvez indiquer la valeur de remplissage à utiliser dans les éléments ajoutés à l'aide du paramètre defaultValue.

Exemple​

var $c : Collection
$c:=New collection
$c.resize(10) // $c=[null,null,null,null,null,null,null,null,null,null]

$c:=New collection
$c.resize(10;0) // $c=[0,0,0,0,0,0,0,0,0,0]

$c:=New collection(1;2;3;4;5)
$c.resize(10;New object("name";"X")) //$c=[1,2,3,4,5,{name:X},{name:X},{name:X},{name:X},{name:X}]

$c:=New collection(1;2;3;4;5)
$c.resize(2) //$c=[1,2]

.reverse()​

Historique
ReleaseModifications
v16 R6Ajout

.reverse( ) : Collection

ParamètresTypeDescription
RésultatCollection<-Copie inversée de la collection

Description​

La fonction .reverse() retourne une nouvelle collection avec tous les éléments de la collection originale dans l'ordre inverse. Si la collection d'origine est une collection partagée, la collection retournée est également une collection partagée.

Cette fonction ne modifie pas la collection d'origine.

Exemple​

var $c; $c2 : Collection
$c:=New collection(1;3;5;2;4;6)
$c2:=$c.reverse() //$c2=[6,4,2,5,3,1]

.shift()​

Historique
ReleaseModifications
v16 R6Ajout

.shift() : any

ParamètresTypeDescription
Résultatany<-Premier élément de collection

Description​

La fonction .shift() supprime le premier élément de la collection et le retourne comme résultat de la fonction.

Cette fonction modifie la collection d'origine.

Si la collection est vide, cette méthode ne fait rien.

Exemple​

var $c : Collection
var $val : Variant
$c:=New collection(1;2;4;5;6;7;8)
$val:=$c.shift()
// $val=1
// $c=[2,4,5,6,7,8]

.slice()​

Historique
ReleaseModifications
v16 R6Ajout

.slice( startFrom : Integer { ; end : Integer } ) : Collection

ParamètresTypeDescription
startFromInteger->Indice l'élément de départ (inclus)
endInteger->Indice de fin (non inclus)
RésultatCollection<-Nouvelle collection contenant des éléments découpés (copie superficielle)

Description​

La fonction .slice() retourne une partie d'une collection dans une nouvelle collection, sélectionnée de la position startFrom à la position end (end non incluse). Cette fonction retourne une copie superficielle (shallow copy) de la collection. Si la collection d'origine est une collection partagée, la collection retournée est également une collection partagée.

Cette fonction ne modifie pas la collection d'origine.

La collection retournée contient l'élément spécifié par startFrom et tous les éléments suivants jusqu'à l'élément spécifié par end (mais non compris). Si seul le paramètre startFrom est spécifié, la collection retournée contient tous les éléments de startFrom jusqu'au dernier élément de la collection d'origine.

  • Si startFrom < 0, il est recalculé comme startFrom:=startFrom+length (il est considéré comme partant de la fin de la collection).
  • Si la valeur calculée < 0, startFrom est mis à 0.
  • Si end < 0 , il est recalculé comme end:=end+length.
  • Si end < startFrom (valeurs passées ou calculées), la méthode ne fait rien.

Exemple​

var $c; $nc : Collection
$c:=New collection(1;2;3;4;5)
$nc:=$c.slice(0;3) //$nc=[1,2,3]
$nc:=$c.slice(3) //$nc=[4,5]
$nc:=$c.slice(1;-1) //$nc=[2,3,4]
$nc:=$c.slice(-3;-2) //$nc=[3]

.some()​

Historique
ReleaseModifications
19 R6Prise en charge des formules
v16 R6Ajout

.some( { startFrom : Integer ; } formula : 4D.Function { ; ...param : any } ) : Boolean
.some( { startFrom : Integer ; } methodName : Text { ; ...param : any } ) : Boolean

ParamètresTypeDescription
startFromInteger->Elément à partir duquel débuter l'évaluation
formula4D.Function->Objet formule
methodNameText->Nom de méthode
paramMixed->Paramètre(s) à passer
RésultatBoolean<-Vrai si au moins un élément a réussi le test

Description​

La fonction .some() retourne true si au moins un élément de la collection a réussi un test implémenté dans formula ou methodName.

Vous désignez le code 4D de rétroappel (callback) à exécuter pour évaluer les éléments de la collection en utilisant soit :

  • formula (syntaxe recommandée), un objet Formula qui peut encapsuler toute expression exécutable, y compris des fonctions et des méthodes projet;
  • soit methodName, le nom d'une méthode projet (texte).

La callback est appelée avec le(s) paramètre(s) passé(s) dans param (facultatif). La callback peut effectuer n'importe quel test, avec ou sans le(s) paramètre(s) et doit retourner true pour chaque élément remplissant le test. Elle reçoit un Objet en premier paramètre ($1).

La callback reçoit les paramètres suivants :

  • dans $1.value : valeur d'élément à évaluer
  • dans $2: param
  • dans $N...: paramN...

Elle peut définir le(s) paramètre(s) suivant(s) :

  • (obligatoire si vous avez utilisé une méthode) $1.result (booléen) : true si l'évaluation de la valeur de l'élément est à vrai, false sinon.
  • $1.stop (booléen, optionnel) : true pour stopper le rétroappel de la méthode. La valeur retournée est la dernière calculée.

Dans tous les cas, au moment où la fonction .some() rencontre le premier élément de la collection retournant true, elle arrête d'appeler la callback et retourne true.

Par défaut, .some() évalue l'ensemble de la collection. Optionnellement, vous pouvez passer la position de l'élément auquel démarrer le test dans startFrom.

  • Si startFrom >= la longueur de la collection, False est retourné, ce qui signifie que la collection n'est pas testée.
  • Si startFrom < 0, il est considéré comme un décalage par rapport à la fin de la collection.
  • Si startFrom = 0, l'ensemble de la collection est évalué (défaut).

Exemple​

Vous voulez savoir si au moins une valeur de la collection est >0.

var $c : Collection
var $b : Boolean
$c:=New collection
$c.push(-5;-3;-1;-4;-6;-2)
$b:=$c.some(Formula($1.value>0)) // $b=false
$c.push(1)
$b:=$c.some(Formula($1.value>0)) // $b=true

$c:=New collection
$c.push(1;-5;-3;-1;-4;-6;-2)
$b:=$c.some(Formula($1.value>0)) //$b=true
$b:=$c.some(1;Formula($1.value>0)) //$b=false

.sort()​

Historique
ReleaseModifications
19 R6Prise en charge des formules
v16 R6Ajout

.sort() : Collection
.sort( ascOrDesc : Integer ) : Collection
.sort( formula : 4D.Function { ; ...extraParam : any } ) : Collection
.sort( methodName : Text { ; ...extraParam : any } ) : Collection

ParamètresTypeDescription
ascOrDescInteger->ck ascending ou ck descending (valeurs scalaires)
formula4D.Function->Objet formule
methodNameText->Nom de méthode
extraParamany->Paramètre(s) à passer à la méthode
RésultatCollection<-Collection d'origine triée

Description​

La fonction .sort() trie les éléments de la collection d'origine et retourne également la collection triée.

Cette fonction modifie la collection d'origine.

Si .sort() est appelé sans paramètres, seules les valeurs scalaires (nombres, textes, dates, booléens) sont triées. Les éléments sont triés par défaut par ordre croissant, en fonction de leur type. Vous pouvez également passer une des constantes suivantes dans le paramètre ascOrDesc :

|Constante| Type|Valeur|Comment|
|---|---|---|
|ck ascending|Integer|0|Les éléments sont classés par ordre croissant (par défaut)|
|ck descending|Integer|1|Les éléments sont classés par ordre décroissant|

Cette syntaxe ordonne uniquement les valeurs scalaires dans la collection (les autres types d'éléments tels que les objets ou les collections sont renvoyés non ordonné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 renvoyés dans l'ordre suivant :

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

Si vous souhaitez trier les éléments de la collection dans un autre ordre ou trier n'importe quel type d'élément, vous devez fournir dans *formula * (objet Formula) ou methodName (Text) une callback qui définit l'ordre de tri. La valeur de retour doit être un booléen qui indique l'ordre relatif des deux éléments : True si $1.value est inférieur à $1.value2, False si $1.value est supérieur à $1.value2. Vous pouvez fournir des paramètres supplémentaires à la callback si nécessaire.

La callback reçoit les paramètres suivants :

  • $1 (object), où :
    • $1.value (tout type) : valeur du premier élément à comparer
    • $1.value2 (tout type) : valeur du second élément à comparer
  • $2...$N (tout type) : paramètres supplémentaires (extraParam)

Si vous avez utilisé une méthode, vous devez définir le paramètre suivant :

  • $1.result (boolean): True if $1.value < $1.value2, False otherwise.

Exemple 1​

var $col; $col2 : Collection
$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]

Exemple 2​

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

Exemple 3​

var $col; $col2; $col3 : Collection
$col:=New collection(33;4;66;1111;222)
$col2:=$col.sort() //numerical sort: [4,33,66,222,1111]
$col3:=$col.sort(Formula(String($1.value)<String($1.value2))) //tri alphabétique : [1111,222,33,4,66]

.sum()​

Historique
ReleaseModifications
v16 R6Ajout

.sum( { propertyPath : Text } ) : Real

ParamètresTypeDescription
propertyPathText->Chemin de propriété d'objet à utiliser pour évaluer les valeurs
RésultatReal<-Somme des valeurs de la collection

Description​

La fonction .sum() retourne la somme de toutes les valeurs de l'instance de collection.

Seuls les éléments ayant une valeur numérique sont pris en compte pour le calcul (les autres types d'éléments sont ignorés).

Les positions sont retournées dans un ordre croissant.

.sum() retourne 0 si :

  • la collection est vide,
  • la collection ne contient pas d'éléments numériques,
  • propertyPath n'est pas trouvé dans la collection.

Exemple 1​

var $col : Collection
var $vSum : Real
$col:=New collection(10;20;"Monday";True;2)
$vSum:=$col.sum() //32

Exemple 2​

var $col : Collection
var $vSum : Real
$col:=New collection
$col.push(New object("name";"Smith";"salary";10000))
$col.push(New object("name";"Wesson";"salary";50000))
$col.push(New object("name";"Gross";"salary";10500,5))
$vSum:=$col.sum("salary") //$vSum=70500,5

.unshift()​

Historique
ReleaseModifications
v16 R6Ajout

.unshift( value : any { ;...valueN : any } ) : Collection

ParamètresTypeDescription
valueText, Number, Object, Collection, Date->Valeur(s) à insérer au début de la collection
RésultatCollection<-Collection contenant des éléments ajoutés

Description​

La fonction .unshift() insère value au début de la collection et retourne la collection modifiée.

Cette fonction modifie la collection d'origine.

Si plusieurs valeurs sont passées, elles sont insérées toutes en même temps, ce qui signifie qu'elles apparaissent dans la collection résultante dans le même ordre que dans la liste d'arguments.

Exemple​

var $c : Collection
$c:=New collection(1;2)
$c.unshift(4) // $c=[4,1,2]
$c.unshift(5) //$c=[5,4,1,2]
$c.unshift(6;7) // $c=[6,7,5,4,1,2]