javascript - 减少表情符号对象数组以获取每个表情符号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,老实说,我很难让它与表情符号一起使用。
解决方案
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 名。
推荐阅读
- arrays - 向后浏览字典以查找上次更新值的时间
- java - 类 main 的方法未定义
- sql - 删除最旧的重复项并按时间戳保留最新的重复项
- flutter - 使 FadeInImage.memoryNetwork 渲染圆形裁剪图像
- mono - Mac 上的 Mono 控制台应用程序:如何在 MacOS Mojave 上读取/更改 ~/Library 文件
- angular - 更改日期时间格式
- php - gpg 解密 php 在终端中工作,而不是在 shell_exec 中
- python - 在 Python 中访问嵌套 JSON 数据时遇到问题
- javascript - reactStringReplace() 不一致的正则表达式匹配
- javascript - 使用 Javascript 从 URL 中去除字符