Hyperlinkv0.8.0-beta.28

Record

Record.collectconsteffect/Record.ts:333
<K extends string, A, B>(f: (key: K, a: A) => B): (
  self: ReadonlyRecord<K, A>
) => Array<B>
<K extends string, A, B>(
  self: ReadonlyRecord<K, A>,
  f: (key: K, a: A) => B
): Array<B>

Transforms the values of a record into an Array with a custom mapping function.

Example (Collecting mapped record values)

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

const x = { a: 1, b: 2, c: 3 }
assert.deepStrictEqual(Record.collect(x, (key, n) => [key, n]), [["a", 1], [
  "b",
  2
], ["c", 3]])
converting
Source effect/Record.ts:33313 lines
export const collect: {
  <K extends string, A, B>(f: (key: K, a: A) => B): (self: ReadonlyRecord<K, A>) => Array<B>
  <K extends string, A, B>(self: ReadonlyRecord<K, A>, f: (key: K, a: A) => B): Array<B>
} = dual(
  2,
  <K extends string, A, B>(self: ReadonlyRecord<K, A>, f: (key: K, a: A) => B): Array<B> => {
    const out: Array<B> = []
    for (const key of keys(self)) {
      out.push(f(key, self[key]))
    }
    return out
  }
)
Referenced by 2 symbols