UNPKG

pragmatic-fp-ts

Version:

Opinionated functional programming library with easy use in mind

24 lines (20 loc) 616 B
import { Dictionary, getValueOr, Predicate } from "./main.ts"; export function pickBy<A = any>( pred: Predicate<A>, dict: Dictionary<A> ): Dictionary<A>; export function pickBy<A = any>( pred: Predicate<A> ): (dict: Dictionary<A>) => Dictionary<A>; export function pickBy<A = any>(pred: Predicate<A>, dict?: A) { if (arguments.length === 1) { return (_dict: Dictionary<A>) => pickBy(pred, _dict) as any; } const dd = getValueOr({} as any, dict); return Object.keys(dd).reduce((accum, key) => { if (pred(dd[key])) { accum[key] = dd[key]; } return accum; }, {} as any) as A; }