一尘不染

获取数组中出现次数最多的元素

javascript

我正在寻找一种确定JavaScript数组中哪个元素的出现次数最多的优雅方法(mode)。

例如,在

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

'apple'元素是最常见的元素。


阅读 614

收藏
2020-04-25

共1个答案

一尘不染

这只是模式。这是一个 快速的,未优化的 解决方案。它应该是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;
        else
            modeMap[el]++;  
        if(modeMap[el] > maxCount)
        {
            maxEl = el;
            maxCount = modeMap[el];
        }
    }
    return maxEl;
}
2020-04-25