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

Javascript 获取数组中计数最多的前三个反应,javascript,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, react

我对某个帖子有一系列的反应

看起来是这样的:

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
反应=[{user:21,反应:'haha'},{user:7,反应:'haha'},{user:15,反应:'haha'},{user:55,反应:'wow'},{user:27,反应:'wow'},{user:87,反应:'wow'},{user:15,反应:'heart'},{user:15,反应:'like'},{user:15,反应:'like'},{user:15,反应:'like'},{user:15,反应:'like'}],
top3=对象
.entries(reactions.reduce((r,{reaction})=>(r[反应]=(r[反应]| 0)+1,r),{}))
.sort(([,a],,b])=>b-a)
.slice(0,3)
.map(([k])=>k);

console.log(top3);
您可以计算对象的相同反应,获取条目并对其进行排序,然后仅获取键的前三名

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

console.log(top3);
您是否有意省略heart?是否尝试过(筛选)?是的,之所以选择它是因为我只想要计数最多的前三个反应。有多少可能的反应?@JordanSchnur有5个反应制造另一个对象,其关键是反应,值是计数。然后按计数对反应进行排序,并取前3个。你是故意省略心脏吗?你做了什么吗尝试(筛选)?是的,之所以选择它是因为我只想要计数最多的前三个反应。有多少可能的反应?@JordanSchnur有5个反应创建另一个对象,其键是反应,值是计数。然后按计数对反应进行排序,并取前3个。