UNPKG

@monstermann/fn

Version:

A utility library for TypeScript.

61 lines (59 loc) 1.18 kB
import { dfdlT } from "@monstermann/dfdl"; import { cloneMap } from "@monstermann/remmi"; //#region src/map/removeAll.ts /** * `removeAll(map, keys)` * * Removes all entries with the specified `keys` from `map`, returning a new map. This function supports iterables. * * ```ts * removeAll( * new Map([ * ["a", 1], * ["b", 2], * ["c", 3], * ]), * ["a", "c"], * ); // Map(1) { "b" => 2 } * * removeAll( * new Map([ * ["a", 1], * ["b", 2], * ["c", 3], * ]), * ["d", "e"], * ); // Map(3) { "a" => 1, "b" => 2, "c" => 3 } * ``` * * ```ts * pipe( * new Map([ * ["a", 1], * ["b", 2], * ["c", 3], * ]), * removeAll(["a", "c"]), * ); // Map(1) { "b" => 2 } * * pipe( * new Map([ * ["a", 1], * ["b", 2], * ["c", 3], * ]), * removeAll(["d", "e"]), * ); // Map(3) { "a" => 1, "b" => 2, "c" => 3 } * ``` */ const removeAll = dfdlT((target, keys) => { let result; for (const key of keys) { if (!target.has(key)) continue; result ??= cloneMap(target); result.delete(key); } return result ?? target; }, 2); //#endregion export { removeAll };