UNPKG

@monstermann/fn

Version:

A utility library for TypeScript.

57 lines (55 loc) 1.07 kB
import { is } from "../function/is.js"; import { dfdlT } from "@monstermann/dfdl"; import { cloneMap } from "@monstermann/remmi"; //#region src/map/set.ts /** * `set(map, key, value)` * * Sets the `value` for the specified `key` in `map`, returning a new map if the value changes. * * ```ts * set( * new Map([ * ["a", 1], * ["b", 2], * ]), * "a", * 10, * ); // Map(2) { "a" => 10, "b" => 2 } * * set( * new Map([ * ["a", 1], * ["b", 2], * ]), * "c", * 3, * ); // Map(3) { "a" => 1, "b" => 2, "c" => 3 } * ``` * * ```ts * pipe( * new Map([ * ["a", 1], * ["b", 2], * ]), * set("a", 10), * ); // Map(2) { "a" => 10, "b" => 2 } * * pipe( * new Map([ * ["a", 1], * ["b", 2], * ]), * set("c", 3), * ); // Map(3) { "a" => 1, "b" => 2, "c" => 3 } * ``` */ const set = dfdlT((target, key, value) => { if (is(target.get(key), value)) return target; target = cloneMap(target); target.set(key, value); return target; }, 3); //#endregion export { set };