[API reference](https://evolu.dev/docs/api-reference) › [@evolu/common](https://evolu.dev/docs/api-reference/common) › [Set](https://evolu.dev/docs/api-reference/common/Set) › mapSet

## Call Signature

```ts
function mapSet<T, U>(
  set: NonEmptyReadonlySet<T>,
  mapper: (item: T) => U,
): NonEmptyReadonlySet<U>;
```

Defined in: [packages/common/src/Set.ts:177](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Set.ts#L177)

Maps a set using a mapper function, returning a new readonly set.

Preserves non-empty type.

Note: If the mapper produces duplicate values, the resulting set will have
fewer elements.

### Example

```ts
mapSet(new Set([1, 2, 3]), (x) => x * 2); // Set {2, 4, 6}
mapSet(new Set([1, 2, 3]), (x) => x % 2); // Set {1, 0} (duplicates merged)
```

## Call Signature

```ts
function mapSet<T, U>(
  set: ReadonlySet<T>,
  mapper: (item: T) => U,
): ReadonlySet<U>;
```

Defined in: [packages/common/src/Set.ts:182](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Set.ts#L182)

Possibly empty set.