【问题标题】:How do I get the elements in an array with the highest occurrency? [closed]如何获取出现次数最高的数组中的元素? [关闭]
【发布时间】:2019-08-28 10:49:49
【问题描述】:

例如,我有一个这样的数组;

var arr = [0,0,1,2,2,3,4,5,5,5,6,7,7,7,7,8,9,10,10,10]

我的目标是在数组中抛出唯一元素并获得重复次数最多的数字。

var arr = [7,7,7,7]

如何在 JavaScript 中实现这一点?

【问题讨论】:

  • 到目前为止有什么努力吗?请发布您到目前为止尝试过的代码?
  • 如果有平局怎么办? [1, 1, 2, 2] 的结果应该是什么? [] 呢?元素总是排序还是[1, 2, 1] 有可能?
  • 欢迎来到 Stack Overflow!请使用tour(您将获得徽章!)并通读help center,尤其是How do I ask a good question? 您最好的选择是进行研究,search 以获取有关 SO 的相关主题,然后试一试. 如果您在进行更多研究和搜索后遇到困难并且无法摆脱困境,请发布您的尝试minimal reproducible example,并具体说明您遇到的问题。人们会很乐意提供帮助。
  • var arr = [0,0,1,2,2,3,4,5,5,5,6,7,7,7,7,8,9,10,10,10]; const f = arr.reduce( (a, b, i, arr) => (arr.filter(v => v === a).length >= arr.filter(v => v === b).length?a:b), null); let result = arr.filter((value) => value === f); console.log(result);

标签: javascript jquery arrays


【解决方案1】:

var arr = [0, 0, 1, 2, 2, 3, 4, 5, 5, 5, 6, 7, 7, 7, 7, 8, 9, 10, 10, 10]

var uniq = arr.reduce((all, next) => {
  var exist = all.find(v => v.key === next)
  if (exist) {
    exist.count += 1
    exist.val.push(next)
  } else {
    all.push({
      key: next,
      count: 1,
      val: [next]
    })
  }
  return all
}, [])

var max = uniq[0]
uniq.forEach(item => {
  if (item.count > max.count) {
    max = item
  }
})

console.log(max.val)

【讨论】:

    猜你喜欢
    • 2010-11-06
    • 2019-04-29
    • 2020-10-13
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多