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