Maison > interface Web > js tutoriel > le corps du texte

JavaScript趣题:求数组出现频率最大元素

黄舟
Libérer: 2017-02-04 15:45:05
original
1450 Les gens l'ont consulté

给定一个数组,将其传入一个highestRank(arr)函数,并且返回数组中出现频率最大的元素。

若有多个出现频率最大的元素,返回数值最大的那个。

举例如下:

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
Copier après la connexion

对于这一类求出现频率,咋们最好是作个统计,看各个数字出现的频率是多少。


接着,筛选出出现频率最大的那一个,或者说一组数。

最后,从这一组数中找出最大的,并且返回。

我个人更倾向于使用hash对象来解决,高效而且便于枚举。

排序应该也可以解决,但效率肯定会低些

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);  
}
Copier après la connexion

以上就是 JavaScript趣题:求数组出现频率最大元素的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!