import {InternMap} from "internmap"; export default function mode(values, valueof) { const counts = new InternMap(); if (valueof === undefined) { for (let value of values) { if (value != null && value >= value) { counts.set(value, (counts.get(value) || 0) + 1); } } } else { let index = -1; for (let value of values) { if ((value = valueof(value, ++index, values)) != null && value >= value) { counts.set(value, (counts.get(value) || 0) + 1); } } } let modeValue; let modeCount = 0; for (const [value, count] of counts) { if (count > modeCount) { modeCount = count; modeValue = value; } } return modeValue; }