@monstermann/fn
Version:
A utility library for TypeScript.
32 lines (30 loc) • 718 B
JavaScript
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 };