思路
循环数组,将相同元素计数放入对象中,为出现最多的元素和次数赋初始值为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)