我有一个这样的对象数组。
[
{
_id: 123
},
{
_id: 123
},
{
_id: 321
}
]
我想通过_id对相似的项目进行分组,并且还要计算每个唯一_id的项目数...
[
{
_id: 123
qty: 2
},
{
_id: 321
qty: 1
}
]
使用javascript做到这一点的最佳方法是什么?
答案 0 :(得分:2)
您可以在O(n)时间内使用Array.prototype.reduce()
和Map
作为累加器来完成此操作:
const array = [{'_id':123},{'_id':123},{'_id':321}]
const groups = [...array.reduce(
(map, { _id }) => map.set(_id, (map.get(_id) || 0) + 1),
new Map()
)].map(
([_id, qty]) => ({ _id, qty })
)
console.log(groups)