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
| Parameter | Type |
|---|---|
array | readonly [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
| Parameter | Type |
|---|---|
array | readonly T[] | T[] |
by? | (item) => unknown |
Returns
readonly T[]