UNPKG

@monstermann/fn

Version:

A utility library for TypeScript.

42 lines (40 loc) 861 B
import { dfdlT } from "@monstermann/dfdl"; import { cloneMap } from "@monstermann/remmi"; //#region src/map/filter.ts /** * `filter(map, predicate)` * * Filters `map` by keeping only the entries where `predicate` returns true for the value. * * ```ts * filter( * new Map([ * ["a", 1], * ["b", 2], * ["c", 3], * ]), * (value) => value > 1, * ); // Map(2) { "b" => 2, "c" => 3 } * ``` * * ```ts * pipe( * new Map([ * ["a", 1], * ["b", 2], * ["c", 3], * ]), * filter((value) => value > 1), * ); // Map(2) { "b" => 2, "c" => 3 } * ``` */ const filter = dfdlT((target, predicate) => { let result; for (const [key, value] of target) if (!predicate(value, key, target)) { result ??= cloneMap(target); result.delete(key); } return result ?? target; }, 2); //#endregion export { filter };