获取数组中计数最多的前三个反应

  • 本文关键字:三个 数组 获取 javascript
  • 更新时间 :
  • 英文 :


我有一个特定帖子的反应对象数组。

它看起来像这样:

reactions: [
{user: 21, reaction:'haha'},
{user: 7, reaction:'haha'},
{user: 15, reaction:'haha'},
{user: 55, reaction:'wow'},
{user: 27, reaction:'wow'},
{user: 87, reaction:'wow'},
{user: 15, reaction:'heart'},
{user: 15, reaction:'heart'},
{user: 95, reaction:'like'},
{user: 100, reaction:'like'},
{user: 209, reaction:'like'},
{user: 122, reaction:'like'},
]

我如何使其结果应该是:['like', 'haha', 'wow']

您可以对一个对象的相同反应进行计数,获取条目,对它们进行排序,并仅获得键的前三名。

const
reactions = [{ user: 21, reaction: 'haha' }, { user: 7, reaction: 'haha' }, { user: 15, reaction: 'haha' }, { user: 55, reaction: 'wow' }, { user: 27, reaction: 'wow' }, { user: 87, reaction: 'wow' }, { user: 15, reaction: 'heart' }, { user: 15, reaction: 'heart' }, { user: 15, reaction: 'like' }, { user: 15, reaction: 'like' }, { user: 15, reaction: 'like' }, { user: 15, reaction: 'like' }],
top3 = Object
.entries(reactions.reduce((r, { reaction }) => (r[reaction] = (r[reaction] || 0) + 1, r), {}))
.sort(([, a], [, b]) => b - a)
.slice(0, 3)
.map(([k]) => k);
console.log(top3);

最新更新