114 votes

Obtenir l'élément ayant l'occurrence la plus élevée dans un tableau

Je cherche une manière élégante de déterminer quel élément a l'occurrence la plus élevée (mode) dans un tableau JavaScript.

Par exemple, dans

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

l'élément 'apple' est le plus fréquent.

120voto

Matthew Flaschen Points 131723

C'est juste le mode. Voici une solution rapide et non optimisée. Il devrait être 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;
}

14voto

Thinker Points 7239
a=['pear', 'apple', 'orange', 'apple'];
b={};
max='', maxi=0;
for(let k of a) {
  if(b[k]) b[k]++; else b[k]=1;
  if(maxi < b[k]) { max=k; maxi=b[k] }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X