首页 > 解决方案 > 减少表情符号对象数组以获取每个表情符号javascript的计数

问题描述

我有一个javascript数组如下:

[
    {moodSymbol: ""},
    {moodSymbol: ""},
    {moodSymbol: ""},
    {moodSymbol: ""},
    {moodSymbol: ""},
    {moodSymbol: ""},
    {moodSymbol: ""},
    {moodSymbol: ""},
    {moodSymbol: ""},
    {moodSymbol: ""},
    {moodSymbol: ""},
    {moodSymbol: ""},
]

如何获取每个表情符号的计数并仍然保持 moodSymbol 键名:

const data = [
{
    moodSymbol: "",
    count: 3
},
{
    moodSymbol: "",
    count: 2
}, 
...
]

我也想要数量最多的前 5 名。我尝试使用reduce,老实说,我很难让它与表情符号一起使用。

标签: javascriptarraysjavascript-objectsemoji

解决方案


const result = Array.from(data.reduce((acc,{ moodSymbol: emoji }) => {
  const count = acc.get(emoji) || 0
  acc.set(emoji, count + 1)
  return acc
}, new Map()).entries()).map(([moodSymbol, count]) => ({ moodSymbol, count }))

如果你想要前 5 名,你可以按排序count然后切掉 5 名。


推荐阅读