API reference › @evolu/common › Array › dedupeArray
Call Signature
function dedupeArray<T>(
array: readonly [T, T],
by?: (item: T) => unknown,
): readonly [T, T];
Defined in: packages/common/src/Array.ts:608
Returns a new readonly array with duplicate items removed. Items are compared
using Set equality (SameValueZero): primitives by value, and objects and
arrays by reference. If by is provided, it derives the comparison key.
Preserves non-empty type.
Deduplicating by value or key
import { dedupeArray, type NonEmptyReadonlyArray } from "@evolu/common";
const numbers = dedupeArray([1, 2, 1, 3, 2]);
const people = dedupeArray(
[
{ id: 1, name: "Alice" },
{ id: 2, name: "Bob" },
{ id: 1, name: "Alice 2" },
],
(item) => item.id,
);
expectTypeOf(numbers).toEqualTypeOf<NonEmptyReadonlyArray<number>>();
expect(numbers).toEqual([1, 2, 3]);
expect(people).toEqual([
{ id: 1, name: "Alice" },
{ id: 2, name: "Bob" },
]);
Call Signature
function dedupeArray<T>(
array: readonly T[],
by?: (item: T) => unknown,
): readonly T[];
Defined in: packages/common/src/Array.ts:613
Possibly empty array.