removeDuplicates()

概要

元の一覧で重複していた各項目のオカレンスが 1 つ記述される新しい一覧を返します。返される一覧内での項目の順序は定義されません。重複していない項目も、返される一覧に含まれます。削除する重複のオカレンスを指定する方法はありません。

構文

RemoveDuplicates ( list As List, _
                   Optional key As Name = :Identity, _
                   Optional test As Name = :Equal ) As List 
引数 [タイプ] 説明
list [一覧] 重複を削除する一覧です。
key [名前] 任意指定。重複のチェック中にその値を取得するときに各項目に適用する関数の名前です。既定は :Identity です。
テスト [名前] 任意指定。2 つの値を比較するときに各項目に適用する関数の名前です。既定は :Equal です。

例 1

同種のタイプです。
Intent >RemoveDuplicates({4, 7, 4, 2, 6, 6, 3, 1, 3}) 
--> {4, 7, 2, 6, 3, 1} 

例 2

異種のタイプです。
Intent >RemoveDuplicates({:a, :z, :c, :a, 3, :e, :f, :g, :c}) 
--> {:a, :z, :c, 3, :e, :f, :g} 

例 3

test 関数を使用します。
Intent >RemoveDuplicates({:a, :b, 3, "a", "b", {3}, "3"}, test := :sameType?) 
--> {:a, 3, "a", {3}} 
重複のテストとしてカスタム関数を使用すると、値に関係なく、各データ型のエントリが 1 つのみ維持されます。
Function sameType?(I as Any, j as Any) as Boolean
    sameType? = (typeName(i) = typeName(j)) 
End Function 

例 4

key 関数を使用します。
Intent >RemoveDuplicates({1.4, 2.5, 2.6, 3.5, 1.1, 2.3}, key := :ceiling) 
--> {1.4, 2.5, 3.5} 
結果は必ずしもこの順序になるとは限りません。また、必ずしも同じ要素になるとは限りません。たとえば、2.5 の代わりに、2.6 または 2.3 が一覧に含まれることがあります。

例 5

複数の一覧で、再帰的に動作します。
Intent >RemoveDuplicates({{4.5,6},{2.5,6},{1.5,8},{4.5,6}})
--> {{4.5, 6}, {2.5, 6}, {1.5, 8}}