removeDuplicates()

Zusammenfassung

Gibt eine neue list mit einem einzelnen Exemplar jedes duplizierte Element in der ursprünglichen list . Die Reihenfolge der Elemente in der zurückgegebenen list ist nicht definiert. Die nicht doppelten Elemente werden auch in der zurückgegebenen list . Es gibt keine Möglichkeit anzugeben, welche Exemplare 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 List Die list aus der Duplikate entfernt werden sollen.
key Name Optional. Name einer Funktion für jedes Element beim Abrufen der Wert während der Suche nach Duplikaten. Vorgabe ist :Identity.
test Name Optional. Name einer Funktion für jedes Element beim Vergleichen von zwei Werten. 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} 
Ergebnis ist nicht unbedingt in dieser Reihenfolge und nicht unbedingt genau diese Elemente. Sie können zum Beispiel statt 2.5 möglicherweise 2.6 oder 2.3 in der list .

Beispiel 5

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