[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) › filterSet

## Call Signature

```ts
function filterSet<T, S>(
  set: ReadonlySet<T>,
  refinement: RefinementWithIndex<T, S>,
): ReadonlySet<S>;
```

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

Filters a set using a predicate or refinement function, returning a new
readonly set.

When used with a refinement function (with `value is Type` syntax),
TypeScript will narrow the result type.

### Example

```ts
filterSet(new Set([1, 2, 3, 4, 5]), (x) => x % 2 === 0); // Set {2, 4}
```

## Call Signature

```ts
function filterSet<T>(
  set: ReadonlySet<T>,
  predicate: PredicateWithIndex<T>,
): ReadonlySet<T>;
```

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

With predicate.