4 verschiedene Möglichkeiten, Objekte in einer Sammlung zu finden

Automatisch übersetzt von Deepl

Als Entwickler müssen Sie oft wissen, ob ein bestimmtes Element bereits in einer Sammlung vorhanden ist, oder Sie müssen alle Elemente finden , die bestimmten Kriterien entsprechen. Die 4D Sammelmethoden bieten viele verschiedene Möglichkeiten, um nach bestimmten Elementen zu suchen.

Dieser Artikel ist Teil einer Serie, die zeigt, wie man Sammlungen mit den in 4D v16 R6 hinzugefügten Methoden manipuliert. Um noch mehr zu erfahren, laden Sie unsere Datenbank-Demo herunter, die 12 verschiedene Beispiele enthält, um zu zeigen, was Sie alles mit den Sammlungsmethoden machen können!

Datenbank-Beispiel: Verwalten von Sammlungen

WIE kann man Elemente in einer Sammlung finden?

Schauen wir uns nun die verschiedenen Möglichkeiten an, die 4D bietet, um Elemente in einer Sammlung zu finden. Wir beginnen damit, eine Sammlung wie folgt zu erstellen:

$col:=New collection(New object("Stadt"; "Paris"; "Wetter";1))
$col .push(New object("Stadt"; "New-York"; "Wetter";-10))
$col .push(New object("Stadt"; "Tokio"; "Wetter";-5))
$col .push(New object("Stadt"; "Miami"; "Wetter";15))

Verwendung von „some“ oder „every“ Methoden

Um festzustellen, ob mindestens ein Wert Ihrer Sammlung größer als 0 ist, können Sie die some Methode verwenden:

$b:=$col.some("WeatherGreaterThan0") // true

wobei WeatherGreaterThan0 eine Projektmethode ist, die als Rückruf verwendet wird, wie folgt:

$1.result:=$1.value.Weather>0

Wenn Sie nun wissen möchten, ob alle Elemente in Ihrer Sammlung mit einem benutzerdefinierten Test übereinstimmen, verwenden Sie einfach every:

$b:=$col.every("WeatherGreaterThan0") // false

Beachten Sie, dass die gleiche Callback-Methode auch für viele andere Fälle verwendet werden könnte, als eine Art generische Methode.

Filtern einer Sammlung

Sie können eine Sammlung nach den Ergebnissen einer Rückrufmethode filtern, indem Sie die filter Methode.

Auf die gleiche Art und Weise wie in den obigen Beispielen können Sie eine Sammlung mit allen Werten größer als 0 aus einer anderen Sammlung erstellen:

$colNew:=$col.filter("WeatherGreaterThan0")
// [{Stadt:Paris,Wetter:1},{Stadt:Miami,Wetter:15}]

Suche nach dem ersten Element, das einem Kriterium entspricht

Wenn Sie nach dem ersten Element einer Sammlung suchen, das mit einer bestimmten Projektmethode übereinstimmt, verwenden Sie einfach find als Rückrufmethode:

$o:=$col.find("WetterGrößerAls0") // {Stadt:Paris,Wetter:1}

Wenn Sie nach dem Index und nicht nach dem Element selbst suchen, verwenden Sie findIndex:

$index:=$col .findIndex("WetterGrößerAls0")
// $i=0 (erster Index der Sammlung)

Index eines gesuchten Elements ermitteln

Schließlich können Sie die indexOf und lastIndexOf verwenden, um nach einem Ausdruck in den Elementen der Sammlung zu suchen und den Index des ersten/letzten gefundenen Vorkommens zurückzugeben:

$col2:=New collection(1;2; "Henry"; "Albert"; "Henry";6;4; "Henry";5)
$i :=$col2.indexOf("Henry") //$i=2 index of the first occurrence
$i :=$col2.lastIndexOf("Henry")
//$i=7 index of the last occurrence

Fabrice Mainguené
- Product Owner -Fabrice Mainguené gehört seit November 2016 zum 4D Program Team. Als Product Owner ist er verantwortlich für das Schreiben der User Stories und deren Umsetzung in funktionale Spezifikationen. Seine Aufgabe ist es auch, sicherzustellen, dass die gelieferte Funktionsimplementierung den Kundenanforderungen entspricht.Nach seinem Bachelor-Abschluss in Informatik am CNAM arbeitete Fabrice als Windev-Entwickler bei einem kleinen Software-Verlag. Danach arbeitete er für verschiedene Unternehmen in Industrie und Handel als Windev- und Webentwickler sowie als technischer Berater für neue Funktionen.