UNPKG

@monstermann/fn

Version:

A utility library for TypeScript.

32 lines (30 loc) 718 B
import { is } from "../function/is.js"; import { dfdlT } from "@monstermann/dfdl"; import { cloneObject } from "@monstermann/remmi"; //#region src/object/map.ts /** * `map(target, key, transform)` * * Creates a new object with the `key` property transformed by the `transform` function. * * ```ts * map({ a: 1, b: 2 }, "a", (x) => x * 2); // { a: 2, b: 2 } * ``` * * ```ts * pipe( * { a: 1, b: 2 }, * map("a", (x) => x * 2), * ); // { a: 2, b: 2 } * ``` */ const map = dfdlT((target, key, transform) => { const prev = target[key]; const next = transform(prev); if (is(prev, next)) return target; const result = cloneObject(target); result[key] = next; return result; }, 3); //#endregion export { map };