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:691

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 {
  assertEqual,
  assertType,
  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,
);
assertType<NonEmptyReadonlyArray<number>, typeof numbers>();
assertEqual(numbers, [1, 2, 3]);
assertEqual(people, [
  { 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:696

Possibly empty array.