How to add your knowledge

removeDuplicates()

    Version as of 04:06, 19 Jun 2013

    to this version.

    Return to Version archive.

    View current version

    Synopsis

    Returns a new list containing a single occurrence of each duplicated item in the original list. The order of the items in the returned list is not defined. Non-duplicated items also appear in the returned list. There is no way to specify which occurrences of the duplicates are removed.

    Syntax

    RemoveDuplicates ( list As List, _
                       Optional key As Name = :Identity, _
                       Optional test As Name = :Equal ) As List 
    Argument Type Description
    list List The list from which to remove duplicates.
    key Name Optional; name of a function to be applied to each item when getting its value during then check for duplicates; default is :Identity.
    test Name Optional; name of a function to be applied to each item when comparing two values; default is :Equal.

    Example 1

    Homogeneous types

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

    Example 2

    Heterogeneous types

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

    Example 3

    Using a test function

    Intent >RemoveDuplicates({:a, :b, 3, "a", "b", {3}, "3"}, test := :sameType?) 
    --> {:a, 3, "a", {3}} 

    Using a custom function as the test for duplicates, you could also keep just one entry of each data Type, regardless of value.

    Function sameType?(I as Any, j as Any) as Boolean
        sameType? = (typeName(i) = typeName(j)) 
    End Function 

    Example 4

    Using a key function

    Intent >RemoveDuplicates({1.4, 2.5, 2.6, 3.5, 1.1, 2.3}, key := :ceiling) 
    --> {1.4, 2.5, 3.5} 
    Result is not necessarily in this order and not necessarily the exact elements. For example, instead of 2.5, 2.6 or 2.3 may be in the list.

    Example 5

    Multiple List

    Intent >RemoveDuplicates({{4.5,6},{2.5,6},{1.5,8},{4.5,6}})
    --> {{4.5, 6}, {2.5, 6}, {1.5, 8}}

            It is recursive, works with multiple list.