当前位置:Gxlcms > JavaScript > 如何找出数组中重复次数最多的元素

如何找出数组中重复次数最多的元素

时间:2021-07-01 10:21:17 帮助过:146人阅读

以此开始我博客生涯

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

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

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

第一种方法:

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,如果最多重复次数的元素有多个,则返回最后一个元素。

以上就是如何找出数组中重复次数最多的元素的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行