配列内で最も出現頻度の高い要素を取得する 質問する

配列内で最も出現頻度の高い要素を取得する 質問する

どの要素が最も多く出現するかを判断するエレガントな方法を探しています(モード) を JavaScript 配列に含めます。

例えば、

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

要素'apple'は最も頻繁に出現する要素です。

ベストアンサー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;
}

おすすめ記事