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

## Call Signature

```ts
function mapResult<A, T, E>(
  items: A,
  fn: (a: A[number]) => Result<T, E>,
): Result<{ [K in string | number | symbol]: T }, E>;
```

Defined in: [packages/common/src/Result.ts:644](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Result.ts#L644)

Maps items to [Result](https://evolu.dev/docs/api-reference/common/Result/type-aliases/Result)s and extracts all values.

Returns the first error if any result fails.

### Example

```ts
const users = [{ id: 1 }, { id: 2 }];
const result = mapResult(users, validateUser);
// Result<ReadonlyArray<ValidUser>, ValidateUserError>
```

## Call Signature

```ts
function mapResult<A, T, E>(
  items: Iterable<A>,
  fn: (a: A) => Result<T, E>,
): Result<readonly T[], E>;
```

Defined in: [packages/common/src/Result.ts:662](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Result.ts#L662)

For dynamic or generated item lists.

```ts
const users = [{ id: 1 }, { id: 2 }];
const result = mapResult(users, validateUser);
// Result<ReadonlyArray<ValidUser>, ValidateUserError>
```

## Call Signature

```ts
function mapResult<A, T, E, K>(
  items: Readonly<Record<K, A>>,
  fn: (a: A) => Result<T, E>,
): Result<Readonly<Record<K, T>>, E>;
```

Defined in: [packages/common/src/Result.ts:675](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Result.ts#L675)

Returns object with same keys.

```ts
const result = mapResult({ a: 1, b: 2 }, double);
// Result<{ a: number, b: number }, DoubleError>
```