以此开始我博客生涯
-----------------------------------------------------警醒自己
题目:数组中重复次数最多的元素
废话不多说,直接上代码-------
第一种方法:
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) return
if (arr.length === 1) return 1
var res = {}
// 遍历数组
for (var i=0,l=arr.length;i<l;i++) {
if (!res[arr[i]]) {
res[arr[i]] = 1;
} else {
res[arr[i]]++;
}
}
// 遍历 res
var 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,如果最多重复次数的元素有多个,则返回最后一个元素。