/** * * @example * ```ts * const items = [ * {name: 'a', classroom: 'c1'}, * {name: 'b', classroom: 'c2'}, * {name: 'a', classroom: 't0'} * ] * const counted = countBy(items1, i => i.name); * // counted: { a: 2, b: 1} * ``` */ export declare function countBy(items: T[], key: (item: T) => string | number): Record; /** * @example * ```ts * const items = [{n: 1}, {n: 2}] * const max = maxBy(items, i => i.n); * // max: {n: 2} * ``` */ export declare function maxBy(items: T[], value: (item: T) => number): T | null; /** * Checks if there are at least `n` elements in the array that match the given condition. * * @param arr - The input array of elements. * @param matchFn - A function that takes an element of the array and returns a boolean value * indicating if the element matches the desired condition. * @param n - The minimum number of matching elements required. * @returns A boolean value indicating if there are at least `n` matching elements in the array. * * @example * const arr = [1, 2, 3, 4, 5]; * const isEven = (num: number): boolean => num % 2 === 0; * console.log(atLeastNMatches(arr, isEven, 2)); // Output: true */ export declare function atLeastNMatches(arr: T[], matchFn: (element: T) => boolean, n: number): boolean; /** * Groups an array of elements based on a provided key function. * * @example * interface Student { * name: string; * age: number; * } * const students: Student[] = [ * { name: 'Alice', age: 25 }, * { name: 'Bob', age: 23 }, * { name: 'Cathy', age: 25 }, * ]; * const groupedByAge = groupBy(students, (student) => student.age.toString()); * console.log(groupedByAge); * // Output: { * '23': [ { name: 'Bob', age: 23 } ], * '25': [ { name: 'Alice', age: 25 }, { name: 'Cathy', age: 25 } ] * } */ export declare function groupBy(arr: T[], key: K | ((item: T) => K)): Record; export declare function pickArray(target: Array, keys: number[]): Array; export declare function pick(target: T, keys: K[]): { [key in K]: T[K]; }; export declare function pickValues(target: T, keys: K[]): Array; export declare function lastN(target: Array, n: number): T[]; export declare function isEmpty(obj: unknown): boolean; export declare function keys(obj: T): (keyof T)[]; export declare function values(obj: T): T[keyof T][]; type IterableType = T extends Array ? U : T; export declare function last>(iterable: T): IterableType | undefined; export declare function nToLast>(iterable: T, n: number): IterableType | undefined; export {}; //# sourceMappingURL=iterable.d.ts.map