UNPKG

@technobuddha/library

Version:
28 lines 1.89 kB
import { floor } from "./floor.js"; import { isEven } from "./is-even.js"; /** * Calculates the median value of an array of numbers. * * The median is the middle number in a sorted, ascending or descending, list of numbers. * If the list has an even number of elements, the median is the average of the two middle numbers. * @param numbers - An array of numbers to find the median of. * @returns The median value, or `NaN` if the input array is empty. * @example * ```typescript * median([1, 2, 3]); // 2 * median([1, 2, 3, 4]); // 2.5 * median([7, 1, 3, 5]); // 4 * median([]); // NaN * ``` * @group Math * @category Statistics */ export function median(numbers) { if (numbers.length === 0) { return Number.NaN; } const sorted = numbers.toSorted((a, b) => a - b); const mid = floor(sorted.length / 2); return isEven(sorted.length) ? (sorted[mid - 1] + sorted[mid]) / 2 : sorted[mid]; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWFuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21lZGlhbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUFDLE9BQWlCO0lBQ3RDLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6QixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDcEIsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDakQsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFckMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkYsQ0FBQyJ9