javascript - 如何通过数组中的键计算相同对象的数量?
问题描述
我有一个对象数组:
[
{ appleID: 13, bananaID: 55 },
{ appleID: 24, bananaID: 13},
{ appleID: 97, bananaID: 13},
{ appleID: 13, bananaID: 55 }
]
结果应如下所示:
[
{ appleID: 13, bananaID: 55, count: 2 },
{ appleID: 24, bananaID: 13, count: 1},
{ appleID: 97, bananaID: 13, count: 1}
]
计算相同元素的数量element === appleID && element === bananaID
解决方案
您可以.reduce
通过以下两件事来汇总您的数据:
- 关键思想是
key
使用类似的格式构建const key = ${appleID}-${bananaID}
- 使用 在性能方面,您可以使用
object
以获得最高的性能(Find just takesO(1)
)const data = [ { appleID: 13, bananaID: 55 }, { appleID: 24, bananaID: 13}, { appleID: 97, bananaID: 13}, { appleID: 13, bananaID: 55 } ]; const result = data.reduce((acc, {appleID, bananaID}) => { const key = `${appleID}-${bananaID}` acc[key] ??= {appleID, bananaID, count: 0}; acc[key]["count"] += 1; return acc; }, {}); console.log(Object.values(result));
推荐阅读
- java - 在android改造中使用mutlipart注释时如何发送对象
- python - 使用 pandas 将文件连接成 2 个数据帧
- reactjs - 页脚文本未呈现
- github - ValueError:无法将大小为 30200 的数组重新整形为形状 (3772,8)
- azure-data-explorer - 如何在for循环中调用表格函数
- python-3.x - Python 请求 - 获取请求时发布 SSL 错误
- python - 用于用户输入的python子进程
- mysql - XAMPP 错误“错误:MySQL 意外关闭。”
- javascript - 如何遍历另一个列表中的列表 - json + js
- c - fread 怎么知道它上次停止的地方?