面试题:求数组中重复次数最多的元素并求出个数

直接上代码

<script type="text/javascript">
	let ARR = ['b','a','cd','dd','d','a','c','e','c','b','a','c','b','c','b']
	// 先令最多元素为第一个元素
	let max = ARR[0]
	// 最多元素个数
	let num = 0
	// 辅助数组,存储最多数量重复元素
	let eq = []
	let arr = ARR.reduce((newArr,item)=>{
		if(item in newArr){
			newArr[item] += 1
		}else{
			newArr[item] = 1
		}
		return newArr
	},{})
	for(let item in arr){
		if(num < arr[item]){
			num = arr[item]
			max = item
			eq.length = 0
		}else if(num === arr[item]){
			eq.push(item)
		}
	}
	if(eq.length>0){
		eq.forEach(item=>{
			max += ','+item
		})
	}
	// // forEach方法 需要改进,得不到最多数量相同的两个元素
	// let newArr = {}
	// let max = ''
	// let num = 1
	// ARR.forEach((item)=>{
	// 	if(item in newArr){
	// 		newArr[item] += 1
	// 	}else{
	// 		newArr[item] = 1
	// 	}
	// 	if(newArr[item]>num){
	// 		num = newArr[item]
	// 		max = item
	// 	}
	// })
	console.log(arr,'出现最多次数的元素是:'+max+',它出现的次数是:'+num)
</script>
posted @ 2020-04-08 19:43  海常7号  阅读(1279)  评论(0编辑  收藏  举报