Indizierung

Syntax

	$list.indexBy($key-fun)

$list.indexBy($key-fun, $clash-fun)

Beschreibung

Weist jedem Wert der Liste einen Schlüsselwert hinzu.

Im Gegensatz zur Gruppierung sind die Werte im resultierenden Wörterbuch keine Listen, sondern Einzelelemente. Daher müssen die brechneten Schlüsselwerte für die Element der Eingabemenge eindeutig sein. Über die Angabe einer optionalen clash-fun können Schlüsselkonflikte aufgelöst werden.

Parameter

Name Typ Beschreibung Pflicht Default
list Menge Eine Liste, die indiziert werden soll. ja
key-fun Funktion Schlüsselfunktion, nach der die Indizes erzeigt werden sollen. ja
clash-fun Funktion Clashfunktion, nach der Key-Duplikate aufgelöst werden können. Ohne diese Funktion erzeugen Duplikate Fehlermeldungen. nein Keine Auflösung von Duplikaten.

Rückgabewert

Typ: Fachobjekt

Ein Wörterbuch, in dem alle Werte der Liste einem Index zugeordnet sind.

Beispiele

Indizierung nach Namenskürzel

	list("Smith Joe", "Parker Jane", "Taylor Tom", "Black Tyler", "Brown Erik")
   .indexBy(name -> $name.subString(0, 3))

Ausgabe: Ein Wörterbuch mit den Werten:

{
   "Smi":  "Smith Joe",
   "Par":  "Parker Jane",
   "Tay":  "Taylor Tom", 
   "Bla":  "Black Tyler",
   "Bro":  "Brown Erik"
}

Aus jedem Namen werden die ersten 3 Buchstaben als Index verwendet.

Indizierung nach Namenskürzel mit Clash-Funktion

	list("Smith Joe", "Parker Jane", "Brown Erik", "Taylor Tom", "Black Tyler", "Brook Ashley", "Browning Dave")
   .indexBy(name -> $name.subString(0, 3), name1 -> name2 -> $name1 + " and " + $name2)

Ausgabe: Ein Wörterbuch mit den Werten:

{
   "Smi":  "Smith Joe",
   "Par":  "Parker Jane",
   "Tay":  "Taylor Tom", 
   "Bla":  "Black Tyler",
   "Bro":  "Brown Erik and Brook Ashley and Browning Dave"
}

​Die drei Namen "Brown Erik", "Brook Ashley", "Browning Dave" erhalten durch die Schlüsselfunktion dieselben Schlüssel. Ohne Clashfunktion würde eine Fehlermeldung herauskommen. In diesem Fall werden die Namen für den Key zusammengesetzt.