Javascript 如何通过数组中的键计算相同对象的数量?
我有一个对象数组:Javascript 如何通过数组中的键计算相同对象的数量?,javascript,arrays,sorting,object,javascript-objects,Javascript,Arrays,Sorting,Object,Javascript Objects,我有一个对象数组: [ { 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}, { app
[
{ 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
计算相同元素的数量。您可以使用以下两项来聚合数据:
const key=${appleID}-${bananaID}
对象
来获得最高性能(Find just takesO(1)
)
const数据=[
{appleID:13,bananaID:55},
{appleID:24,bananaID:13},
{appleID:97,bananaID:13},
{appleID:13,bananaID:55}
];
const result=data.reduce((acc,{appleID,bananaID})=>{
常量键=`${appleID}-${bananaID}`
acc[key]??={appleID,bananaID,计数:0};
acc[键][“计数”]+=1;
返回acc;
}, {});
console.log(Object.values(result))代码>
const数据=[
{appleID:13,bananaID:55},
{appleID:24,bananaID:13},
{appleID:97,bananaID:13},
{appleID:13,bananaID:55}
]
函数countNum(arr){
返回arr.reduce((预处理,项目)=>{
const hasItem=pre.find(subItem=>subItem.appleID===item.appleID&&subItem.bananaID===item.bananaID)
如果(项目){
hasItem.count++
}否则{
pre.push({…项,计数:1})
}
返回前
}, [])
}
log(countNum(data))
就性能而言,您的代码太慢了,兄弟。实际上,您可以使用object
来获得最高的性能(Find just takesO(1)
),到目前为止您尝试了什么?你应该向我们展示你的代码你在尝试什么:)@Vladislav这能回答你的问题吗?如果您需要帮助,请告诉我:)