统计数组中出现次数最多的元素

113 阅读1分钟
  • 思路:投票的思路 候选人第一次出现写名字还要写一个1,第二次出现找到这个人直接加1 先创建一个对象,然后开始遍历数组,如果发现这个元素项是第一次出现,就把这个元素项 作为对象的属性,值就是1,如果发现这个元素项之前出现过了,就++一下,等统计结束,开始创建一个max变量用来记录最多的元素,maxCount计算最多的元素的次数,开始for..in对象,只要发现某一项比Max还要大,直接把它赋值给max,最终max里面就是次数最多的元素
// 统计出出现次数最多的元素 返回次数和元素
  const arr = [1, 2, 3, 2, 3, 2, 3, 7, 8, 7, 6, 7, 5, 7, 0, 7, 7, 7, 7, 2, 5, 5, 5, 5, 5, 5]

  function repeatCount(arr) {
    // key 是元素 value: 次数
    const obj = {}
    let max = 0
    let maxItem = null
    for (let i = 0; i < arr.length; i++) {
      const item = arr[i]
      if (obj[item]) {
        obj[item]++
      } else {
        obj[item] = 1
      }
      if (obj[item] > max) {
        max = obj[item]
        maxItem = item
      }
    }
    console.log(maxItem, max)
  }

  repeatCount(arr)