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

一个新手
一个新手 原创
2017-09-27 10:35:43 5857浏览

以此开始我博客生涯

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

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

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

第一种方法:

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

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

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。