UNPKG

@technobuddha/library

Version:
36 lines 2.11 kB
/** * Returns the mode (the most frequently occurring element) of the given array. * If multiple elements have the same highest frequency, the first encountered is returned. * Returns `undefined` if the array is empty. * @typeParam T - The type of elements in the input array. * @param array - The array of elements to find the mode of. * @returns The mode of the array, or `undefined` if the array is empty. * @example * ```typescript * mode([1, 2, 2, 3, 3, 3, 4]); // 3 * mode(['a', 'b', 'b', 'a', 'c']); // 'a' * mode([true, false, false, true, true]); // true * mode([]); // undefined * ``` * @group Math * @category Statistics */ export function mode(array) { if (array.length > 0) { const frequencyMap = new Map(); for (const item of array) { frequencyMap.set(item, (frequencyMap.get(item) ?? 0) + 1); } let maxCount = 0; let modeItem; for (const [item, count] of frequencyMap) { if (count > maxCount) { maxCount = count; modeItem = item; } } return modeItem; } return undefined; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsTUFBTSxVQUFVLElBQUksQ0FBSSxLQUFVO0lBQ2hDLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNyQixNQUFNLFlBQVksR0FBRyxJQUFJLEdBQUcsRUFBYSxDQUFDO1FBQzFDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDekIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFFRCxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDakIsSUFBSSxRQUF1QixDQUFDO1FBRTVCLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUN6QyxJQUFJLEtBQUssR0FBRyxRQUFRLEVBQUUsQ0FBQztnQkFDckIsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDakIsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNsQixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIn0=