/** @module array/filterArray.ts */ import { untypedCurry } from '../function' import { Predicate2 } from '../helper-types' const _filterArray = ( fn: Predicate2, arr: A[] ): A[] => arr.filter( fn ) export function filterArray( fn: Predicate2, arr: A[] ): A[] export function filterArray( fn: Predicate2 ): ( arr: A[] ) => A[] /** * Filter elements of an array with a given predicate function * @sig fn -> a[] -> a[] * @param fn predicate function taking item from array and index returns true for values to keep * @param arr array to filter * @example * filterArray( (_,n) => (n + 1) % 2 === 0, [1,2,3,4] ) * //=> [1,2] */ export function filterArray( ...args ) { return untypedCurry( _filterArray )( ...args ) }