算法:找出无序数组中出现最多的元素及次数

思路

循环数组,将相同元素计数放入对象中,为出现最多的元素和次数赋初始值为0,每次循环时将最大值存入

方法1-forEach方法:

let arr = [1,1,1,2,43,3]

let obj = {}, maxNum = 0, maxName = 0

arr.forEach(item => {
    obj[item] ? obj[item]+=1 : obj[item]=1
    if (obj[item] > maxNum) {
        maxName = item  
        maxNum = obj[item]
    }
})

方法2-reduce方法

function findMost(arr) {
	if (!arr.length) return
	if (arr.length === 1) return 1
	let maxNum = 0, maxName = 0
	// reduce方法接收两个参数,一个函数,一个为初始值
	// res为多次方法累加的结果,item为当前项
	
	let res = arr.reduce((res, item) => {
		res[item] ? res[item] +=1 : res[item]=1
		if (res[item] > maxNum) {
			maxName = item
			maxNum = res[item]
		}
		return res;
	}, [])
	return '出现最多的元素是'  + maxName + ',出现的次数为' + maxNum

let arr = [1,1,2,3,3,2,1,2]
findMost(arr)
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值