Hyperlinkv0.8.0-beta.28

Record

Record.mapEntriesconsteffect/Record.ts:692
<K extends string, A, K2 extends string, B>(
  f: (a: A, key: K) => readonly [K2, B]
): (self: ReadonlyRecord<K, A>) => Record<K2, B>
<K extends string, A, K2 extends string, B>(
  self: ReadonlyRecord<K, A>,
  f: (a: A, key: K) => [K2, B]
): Record<K2, B>

Maps entries of a ReadonlyRecord using the provided function, allowing modification of both keys and corresponding values.

Example (Mapping record entries)

import { Record } from "effect"
import * as assert from "node:assert"

assert.deepStrictEqual(
  Record.mapEntries({ a: 3, b: 5 }, (a, key) => [key.toUpperCase(), a + 1]),
  { A: 4, B: 6 }
)
mapping
Source effect/Record.ts:69222 lines
export const mapEntries: {
  <K extends string, A, K2 extends string, B>(
    f: (a: A, key: K) => readonly [K2, B]
  ): (self: ReadonlyRecord<K, A>) => Record<K2, B>
  <K extends string, A, K2 extends string, B>(
    self: ReadonlyRecord<K, A>,
    f: (a: A, key: K) => [K2, B]
  ): Record<K2, B>
} = dual(
  2,
  <K extends string, A, K2 extends string, B>(
    self: ReadonlyRecord<K, A>,
    f: (a: A, key: K) => [K2, B]
  ): Record<K2, B> => {
    const out = {} as Record<K2, B>
    for (const key of keys(self)) {
      const [k, b] = f(self[key], key)
      out[k] = b
    }
    return out
  }
)
Referenced by 2 symbols