API reference / @evolu/common / Array / dedupeArray

Function: dedupeArray()

Defined in: packages/common/src/Array.ts:280

Returns a new readonly array with duplicate items removed. If by is provided, it will be used to derive the key for uniqueness; otherwise values are used directly. Dedupes by reference equality of values (or extracted keys when by is used).

Accepts both mutable and readonly arrays. Does not mutate the original array. Preserves non-empty type.

Example

// Dedupe primitives by value
dedupeArray([1, 2, 1, 3, 2]); // [1, 2, 3]

// Dedupe objects by property
dedupeArray(
  [
    { id: 1, name: "Alice" },
    { id: 2, name: "Bob" },
    { id: 1, name: "Alice 2" },
  ],
  (item) => item.id,
); // [{ id: 1, name: "Alice" }, { id: 2, name: "Bob" }]

Type Parameters

Type Parameter
T

Parameters

ParameterType
arrayreadonly [T, T] | [T, ...T[]]
by?(item) => unknown

Returns

readonly [T, T]

Defined in: packages/common/src/Array.ts:284

Returns a new readonly array with duplicate items removed. If by is provided, it will be used to derive the key for uniqueness; otherwise values are used directly. Dedupes by reference equality of values (or extracted keys when by is used).

Accepts both mutable and readonly arrays. Does not mutate the original array. Preserves non-empty type.

Example

// Dedupe primitives by value
dedupeArray([1, 2, 1, 3, 2]); // [1, 2, 3]

// Dedupe objects by property
dedupeArray(
  [
    { id: 1, name: "Alice" },
    { id: 2, name: "Bob" },
    { id: 1, name: "Alice 2" },
  ],
  (item) => item.id,
); // [{ id: 1, name: "Alice" }, { id: 2, name: "Bob" }]

Type Parameters

Type Parameter
T

Parameters

ParameterType
arrayreadonly T[] | T[]
by?(item) => unknown

Returns

readonly T[]

Was this page helpful?