1. ホーム
  2. javascript

[解決済み] 配列の中で出現回数が最も多い要素を取得する

2022-11-25 05:58:12

質問

どの要素が最も出現率が高いかを決定するエレガントな方法を探しています ( モード ) を決定するエレガントな方法を探しています。

では、例えば

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

その 'apple' 要素が最も頻繁に使われます。

どのように解決するのですか?

これはあくまでモードです。 ここでは 最適化されていないクイック の解決策です。 これは 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;
}