Maison >interface Web >js tutoriel >Question JavaScript intéressante : recherchez l'élément avec la fréquence d'occurrence maximale dans un tableau

Question JavaScript intéressante : recherchez l'élément avec la fréquence d'occurrence maximale dans un tableau

黄舟
黄舟original
2017-02-04 15:45:051534parcourir

Étant donné un tableau, transmettez-le dans une fonction highRank(arr) et renvoyez l'élément avec la fréquence la plus élevée dans le tableau.

S'il existe plusieurs éléments avec la fréquence d'occurrence la plus élevée, renvoie celui avec la plus grande valeur.

Par exemple :

arr = [12, 10, 8, 12, 7, 6, 4, 10, 12];  
highestRank(arr) //=> returns 12  
  
arr = [12, 10, 8, 12, 7, 6, 4, 10, 12, 10];  
highestRank(arr) //=> returns 12  
  
arr = [12, 10, 8, 8, 3, 3, 3, 3, 2, 4, 10, 12, 10];  
highestRank(arr) //=> returns 3

Pour ce type de calcul de fréquence, il est préférable de faire des statistiques pour voir à quelle fréquence chaque nombre apparaît.


Ensuite, filtrez celui avec la fréquence la plus élevée ou un groupe de nombres.

Enfin, trouvez le plus grand de cet ensemble de nombres et renvoyez-le.

Personnellement, je préfère utiliser des objets de hachage pour résoudre le problème, ce qui est efficace et facile à énumérer.

Le tri peut également être résolu, mais l'efficacité sera certainement moindre

function highestRank(arr){  
    var hash = {};  
    var highest = 0;  
    var highestArray = [];  
    for(var i=0;i<arr.length;i++){  
        var cur = arr[i];  
        if(hash[cur]){  
            hash[cur] = 1 + hash[cur];  
        }  
        else{  
            hash[cur] = 1;  
        }  
        if(hash[cur] > highest){  
            highest = hash[cur];  
        }  
    }  
    for(var j in hash){  
        if(hash.hasOwnProperty(j)){  
            if(hash[j] === highest){  
                highestArray.push(j);  
            }  
        }  
    }  
    return Math.max.apply(null,highestArray);  
}

Ce qui précède est une question JavaScript intéressante : trouvez le contenu de l'élément avec la plus grande fréquence d'occurrence dans un array. Pour plus de contenu connexe, veuillez prêter attention à PHP Chinese Net (www.php.cn) !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn