| 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; |
| } |
|
|