js找出数组中出现次数最多的元素

86 阅读1分钟
function findMost(arr) {
    if (!arr.length) return
    if (arr.length === 1) return 1
    let res = {}
    let maxName, maxNum = 0
    // 遍历数组
    arr.forEach((item) => {
      res[item] ? res[item] += 1 : res[item] = 1
    })
    // 遍历 res
    for (let r in res) {
      if (res[r] > maxNum) {
        maxNum = res[r]
        maxName = r
      }
    }
    return '出现次数最多的元素为:' + maxName + ', 出现次数为:' + maxNum;
}
function findMost (arr) {
 if (!arr.length) return;
 if (arr.length === 1) return 1;
 let res = {};
 let maxName, maxNum = 0
 // 遍历数组
 arr.forEach((item) => {
   res[item] ? res[item] += 1 : res[item] = 1
   if (res[item] > maxNum) {
     maxName = item
     maxNum = res[item]
   }
 })
 return '出现次数最多的元素为:' + maxName + ', 出现次数为:' + maxNum;
}

function findMost (arr) {
 if (!arr.length) return;
 if (arr.length === 1) return 1;
 let maxName, maxNum = 0
 let res = arr.reduce((res, currentNum) => {
   res[currentNum] ? res[currentNum] += 1 : res[currentNum] = 1
   if (res[currentNum] > maxNum) {
     maxNum = res[currentNum]
     maxName = currentNum
   }
   return res
 }, {})
 return '出现次数最多的元素为:' + maxName + ', 出现次数为:' + maxNum;
}

const str = 'jshdjsihh';
    const obj = str.split('').reduce((pre,item) => {
        pre[item] ? pre[item] ++ : pre[item] = 1
        return pre
    },{})
console.log(obj) // {j: 2, s: 2, h: 3, d: 1, i: 1}