4D v17.4

collection.filter( )

Home

 
4D v17.4
collection.filter( )

collection.filter( )  


 

Die Funktion collection.filter( ) gibt eine neue Collection mit den Elementen der ursprünglichen Collection zurück, für die das Ergebnis von MethodenName wahr ist. Diese Funktion gibt eine flache Kopie zurück, d.h. Objekte oder Collections in beiden Collections nutzen dieselbe Referenz. Ist die ursprüngliche Collection eine shared collection, ist die zurückgegebene Collection ebenfalls eine shared collection.

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

In MethodenName übergeben Sie den Namen der Methode zum Bewerten der Collection Elemente, zusammen mit den Parametern in param (optional). MethodenName kann das Filtern mit oder ohne Parameter durchführen und muss in $1.result wahr für jedes zutreffende Element zurückgeben und so in die neue Collection setzen.

MethodenName empfängt folgende Parameter:

  • in $1.value: Elementwert zum Filtern
  • in $2: param
  • in $N...: param2...paramN

MethodenName setzt folgende Parameter:

  • $1.result (boolean): wahr, wenn der Elementwert zur Filterbedingung passt und behalten werden soll.
  • $1.stop (boolean, optional): wahr, um Aufruf der Methode zu stoppen. Der zurückgegebene Wert ist der letzte bewertete Wert.

Die Collection von Textelementen mit einer Länge kleiner als 6 erhalten:

 C_COLLECTION($col)
 C_COLLECTION($colNew)
 $col:=New collection("hello";"world";"red horse";66;"tim";"san jose";"miami")
 $colNew:=$col.filter("LengthLessThan";6)
  //$colNew=["hello","world","tim","miami"]

Der Code für die Methode LengthLessThan lautet:

 C_OBJECT($1)
 C_LONGINT($2)
 If(Value type($1.value)=Is text)
    $1.result:=(Length($1.value))<$2
 End if

Elemente nach ihrem Wertetyp filtern:

 C_COLLECTION($c)
 $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("TypeLookUp";Is real// $c2=[5,3,1,4,6,2]
 $c3:=$c.filter("TypeLookUp";Is object)
  // $c3=[{name:Cleveland,zc:35049},{name:Blountsville,zc:35031}]

Der Code für die Methode TypeLookUp lautet:

 C_OBJECT($1)
 C_LONGINT($2)
 If(OB Get type($1;"value")=$2)
    $1.result:=True
 End if

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Collections

Dieser Befehl kann in preemptive Prozessen laufen

 
SEITENINHALT 
 
GESCHICHTE 

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v17)
4D Programmiersprache ( 4D v17.1)
4D Programmiersprache ( 4D v17.2)
4D Programmiersprache ( 4D v17.3)
4D Programmiersprache ( 4D v17.4)