如何解决如何按数组中的键计算相同对象的数量?
[
{ appleID: 13,bananaID: 55 },{ appleID: 24,bananaID: 13},{ appleID: 97,{ appleID: 13,bananaID: 55 }
]
结果应该是这样的:
[
{ appleID: 13,bananaID: 55,count: 2 },bananaID: 13,count: 1},count: 1}
]
通过element === appleID && element === bananaID
计算相同元素的数量
解决方法
您可以使用 .reduce
通过以下 2 项汇总您的数据:
- 关键思想是使用类似
key
的格式构建const key = ${appleID}-${bananaID}
- 使用 在性能方面,可以使用
object
获得最高性能(Find只需要O(1)
)const data = [ { appleID: 13,bananaID: 55 },{ appleID: 24,bananaID: 13},{ appleID: 97,{ 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));
const data = [
{ appleID: 13,bananaID: 55 }
]
function countNum(arr){
return arr.reduce((pre,item) => {
const hasItem = pre.find(subItem => subItem.appleID === item.appleID && subItem.bananaID === item.bananaID)
if(hasItem){
hasItem.count++
}else{
pre.push({...item,count: 1})
}
return pre
},[])
}
console.log(countNum(data))
喜欢这个
function countNum(arr){
return arr.reduce((pre,[])
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。