微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何按数组中的键计算相同对象的数量?

如何解决如何按数组中的键计算相同对象的数量?

我有一个对象数组:

[
  { 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 项汇总您的数据:

  1. 关键思想是使用类似 key 的格式构建 const key = ${appleID}-${bananaID}
  2. 使用 在性能方面,可以使用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 举报,一经查实,本站将立刻删除。