This is a new site that's currently running on alpha code. There are going to be bugs. If you discover any, please report them on the site's issues page (GitHub account required). Thanks.
Warning: Many URLs are going to change. Refer to the README file to discover which library project's documentation has been completed.
Project: Array Utilities Unit
Unit: DelphiDabbler.Lib.ArrayUtils
Record: TArrayUtils
Applies to: ~>0.1
class function DeDup<T>(const A: array of T;
const AEqualityComparer: TEqualityComparison<T>): TArray<T>;
overload; static;
class function DeDup<T>(const A: array of T;
const AEqualityComparer: IEqualityComparer<T>): TArray<T>;
overload; static;
class function DeDup<T>(const A: array of T): TArray<T>;
overload; static;
Returns a copy of an array that contains no duplicated elements.
The copy is a shallow copy, so any references within the resulting array are the same as those in the initial array.
Parameters:
A - The array to be de-duplicated.
AEqualityComparer - An optional function or object that is used to test the equality of two values. Used to determine which array elements are duplicated.
If AEqualityComparer is provided it must be one of:
If the parameter is omitted then the default equality comparer defined by Delphi’s TEqualityComparer<T>.Default method is used.
Returns:
If a deep copy of the de-duplicated array is required then pass the return value of DeDup<T> to the deep copying overload of Copy<T> along with a suitable TCloner<T> implementation.
To de-duplicate a string array use the following code. The code uses the equality comparer function overloaded version of DeDup<T>.
procedure DeDup_Eg;
var
A, B, Expected: TArray<string>;
begin
A := TArray<string>.Create('Foo', 'Bar', 'foo', 'Foo', 'BAR');
B := TArrayUtils.DeDup<string>(A, SameText);
Expected := TArray<string>.Create('Foo', 'Bar');
Assert(TArrayUtils.Equal<string>(Expected, B, SameText));
end;