removeDuplicates()

Zusammenfassung

Gibt eine neue Liste mit einem einzelnen Vorkommen jedes in der ursprünglichen Liste doppelt vorhandenen Elements zurück. Die Reihenfolge der Elemente in der zurückgegebenen Liste ist nicht definiert. Die nicht doppelten Elemente werden auch in der Liste angezeigt. Es gibt keine Möglichkeit anzugeben, welche Vorkommen der Duplikate entfernt werden sollen.

Syntax

RemoveDuplicates ( list As List, _
                   Optional key As Name = :Identity, _
                   Optional test As Name = :Equal ) As List 
Argument Typ Beschreibung
List Liste Die Liste, aus der die Duplikate entfernt werden sollen
key Name Optional. Name einer Funktion, die auf jedes Element beim Abrufen seines Werts während der Suche nach Duplikaten angewendet werden soll. Vorgabe ist :Identity.
test Name Optional. Name einer Funktion, die beim Vergleichen von zwei Werten auf jedes Element angewendet werden soll. Die Vorgabe ist :Equal.

Beispiel 1

Homogene Typen
Intent >RemoveDuplicates({4, 7, 4, 2, 6, 6, 3, 1, 3}) 
--> {4, 7, 2, 6, 3, 1} 

Beispiel 2

Verschiedenartige Typen
Intent >RemoveDuplicates({:a, :z, :c, :a, 3, :e, :f, :g, :c}) 
--> {:a, :z, :c, 3, :e, :f, :g} 

Beispiel 3

Mithilfe einer test-Funktion
Intent >RemoveDuplicates({:a, :b, 3, "a", "b", {3}, "3"}, test := :sameType?) 
--> {:a, 3, "a", {3}} 
Mit einer benutzerdefinierten Funktion als Test auf Duplikate können Sie auch für jeden Datentyp nur einen Eintrag, unabhängig vom Wert, beibehalten.
Function sameType?(I as Any, j as Any) as Boolean
    sameType? = (typeName(i) = typeName(j)) 
End Function 

Beispiel 4

Mithilfe einer key-Funktion
Intent >RemoveDuplicates({1.4, 2.5, 2.6, 3.5, 1.1, 2.3}, key := :ceiling) 
--> {1.4, 2.5, 3.5} 
Das Ergebnis hat nicht unbedingt diese Reihenfolge und enthält nicht unbedingt genau diese Elemente. Beispiel: Anstelle von 2.5 steht möglicherweise 2.6 oder 2.3 in der Liste.

Beispiel 5

Rekursiv, funktioniert mit mehreren Listen
Intent >RemoveDuplicates({{4.5,6},{2.5,6},{1.5,8},{4.5,6}})
--> {{4.5, 6}, {2.5, 6}, {1.5, 8}}