Skip to content

Get the element with the highest occurrence in an array

I’m looking for an elegant way of determining which element has the highest occurrence (mode) in a JavaScript array.

For example, in

['pear', 'apple', 'orange', 'apple']

the 'apple' element is the most frequent one.


This is just the mode. Here’s a quick, non-optimized solution. It should be O(n).

function mode(array)
    if(array.length == 0)
        return null;
    var modeMap = {};
    var maxEl = array[0], maxCount = 1;
    for(var i = 0; i < array.length; i++)
        var el = array[i];
        if(modeMap[el] == null)
            modeMap[el] = 1;
        if(modeMap[el] > maxCount)
            maxEl = el;
            maxCount = modeMap[el];
    return maxEl;