数组中重复次数最多的元素

来源:互联网 发布:怎么用dede建站 编辑:程序博客网 时间:2024/05/29 11:06

以此开始我博客生涯

-----------------------------------------------------警醒自己

题目:数组中重复次数最多的元素

废话不多说,直接上代码-------

第一种方法:

function getMost(arr){var hash = {};var m = 0; var trueEl;var el;for(var i = 0,len = arr.length; i < len; i++ ) {el = arr[i];hash[el] === undefined ? hash[el] = 1 : (hash[el] ++);if(hash[el] >= m){m = hash[el];trueEl = el; }}return trueEl;};    

第二种方法:

function getMost(arr) {if (!arr.length) returnif (arr.length === 1) return 1var res = {}// 遍历数组for (var i=0,l=arr.length;i<l;i++) {if (!res[arr[i]]) {res[arr[i]] = 1;} else {res[arr[i]]++;}}// 遍历 resvar keys = Object.keys(res);console.log(keys);var maxNum = 0, maxEle;for (var i=0,l = keys.length;i<l;i++) {if (res[keys[i]] > maxNum) {maxNum = res[keys[i]];maxEle = keys[i];} return maxEle;}
第三种方法:

Array.prototype.getMost = function(){var obj = this.reduce((p,n) =>(p[n]++ ||(p[n] = 1),(p.max=p.max>=p[n]?p.max:p[n]), (p.key=p.max>p[n]?p.key:n), p), {});return 'key: '+ obj.key+ ' len: '+obj.max;}var arr = [1,2,3,4,2,1,4,2,3,5];arr.getMost();

第三种方法有个bug,如果最多重复次数的元素有多个,则返回最后一个元素。