UNPKG

@monstermann/fn

Version:

A utility library for TypeScript.

56 lines (54 loc) 1.07 kB
import { dfdlT } from "@monstermann/dfdl"; import { cloneMap } from "@monstermann/remmi"; //#region src/map/removeOrElse.ts /** * `removeOrElse(map, key, orElse)` * * Removes the entry with the specified `key` from `map`, calling `orElse` with the map if the key doesn't exist. * * ```ts * removeOrElse( * new Map([ * ["a", 1], * ["b", 2], * ]), * "a", * () => null, * ); // Map(1) { "b" => 2 } * * removeOrElse( * new Map([ * ["a", 1], * ["b", 2], * ]), * "c", * (map) => map.size, * ); // 2 * ``` * * ```ts * pipe( * new Map([ * ["a", 1], * ["b", 2], * ]), * removeOrElse("a", () => null), * ); // Map(1) { "b" => 2 } * * pipe( * new Map([ * ["a", 1], * ["b", 2], * ]), * removeOrElse("c", (map) => map.size), * ); // 2 * ``` */ const removeOrElse = dfdlT((target, key, orElse) => { if (!target.has(key)) return orElse(target); const result = cloneMap(target); result.delete(key); return result; }, 3); //#endregion export { removeOrElse };