给一个数组,找出这个数组中那一个元素出现次数最多,且说明最多出现几次,用js写出来,请问该这么写?麻烦知道的给解答下,谢谢
let counter = ['a', 'a', 'b', 'c', 'b'];
for (let i = 0, len = arr.length; i < len; i++ ) {
counter[arr[i]] ? counter[arr[i]]++ : counter[arr[i]] = 1;
}
console.log(counter.max());
是时候放大招了,
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;
}
按照楼主的要求,返回那个元素和最多的次数。
程序有个 bug,最多出现次数为多个元素的时候,会返回最后一个,并不是第一个。
var getElementUsedMost = function(arr){
var hash = {};//利用hash 来记录次数
var m = 0; //现在的最大次数
var trueEl = null;//最大的元素
for(var i = 0,len = arr.lenth; i < len; i++ ) {
var el = arr[i];
hash[el] === undefined ? hash[el] = 1 : (hash[el] ++);
hash[el] >= m && (trueEl = el);
}
return el;
};
和一楼的想法是一样的,只是可以利用变量来记住次数,不用两次 遍历。
8 回答4.8k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
5 回答6.4k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
hash啊 说个思路,定义一个对象obj,遍历数组, 对象的键为数组的元素,值为出现的次数。然后遍历这个对象,找出值为最大的那个。