UNPKG

remeda

Version:

A utility library for JavaScript and Typescript.

1 lines 1.77 kB
{"version":3,"file":"meanBy.cjs","names":["purry"],"sources":["../src/meanBy.ts"],"sourcesContent":["import { purry } from \"./purry\";\n\n/**\n * Returns the mean of the elements of an array using the provided predicate.\n *\n * @param fn - Predicate function.\n * @signature\n * R.meanBy(fn)(array)\n * @example\n * R.pipe(\n * [{a: 5}, {a: 1}, {a: 3}],\n * R.meanBy(x => x.a)\n * ) // 3\n * @dataLast\n * @category Array\n */\n\nexport function meanBy<T>(\n fn: (value: T, index: number, data: ReadonlyArray<T>) => number,\n): (items: ReadonlyArray<T>) => number;\n\n/**\n * Returns the mean of the elements of an array using the provided predicate.\n *\n * @param items - The array.\n * @param fn - Predicate function.\n * @signature\n * R.meanBy(array, fn)\n * @example\n * R.meanBy(\n * [{a: 5}, {a: 1}, {a: 3}],\n * x => x.a\n * ) // 3\n * @dataFirst\n * @category Array\n */\n\nexport function meanBy<T>(\n items: ReadonlyArray<T>,\n fn: (value: T, index: number, data: ReadonlyArray<T>) => number,\n): number;\n\nexport function meanBy(...args: ReadonlyArray<unknown>): unknown {\n return purry(meanByImplementation, args);\n}\n\nconst meanByImplementation = <T>(\n array: ReadonlyArray<T>,\n fn: (value: T, index: number, data: ReadonlyArray<T>) => number,\n): number => {\n if (array.length === 0) {\n return Number.NaN;\n }\n\n let sum = 0;\n\n for (const [index, item] of array.entries()) {\n sum += fn(item, index, array);\n }\n\n return sum / array.length;\n};\n"],"mappings":"wCA0CA,SAAgB,EAAO,GAAG,EAAuC,CAC/D,OAAOA,EAAAA,EAAM,EAAsB,EAAK,CAG1C,MAAM,GACJ,EACA,IACW,CACX,GAAI,EAAM,SAAW,EACnB,MAAO,KAGT,IAAI,EAAM,EAEV,IAAK,GAAM,CAAC,EAAO,KAAS,EAAM,SAAS,CACzC,GAAO,EAAG,EAAM,EAAO,EAAM,CAG/B,OAAO,EAAM,EAAM"}