API reference@evolu/commonArray › 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.