为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用lodash在对象数组中计数

如何使用lodash在对象数组中计数

呼唤远方 2021-05-07 18:34:06
我有如下对象数组:[    {        company: "CompanyName",        id: "1",        userProfile: {            id: "2",                        telephone: "",            user: {                email: "some_email",                firstName: "Firstname",                lastName: "Lastname",                groups: [                    {id: "2", name: "Manager"},                    {id: "10", name: "Remarketing Manager"}                ]            }        }    },    {        company: "CompanyName",        id: "2",        userProfile: {            id: "3",            telephone: "",            user: {                email: "some_email",                firstName: "Firstname",                lastName: "Lastname",                groups: [                    {id: "1", name: "Seller"}                ]            }        }    },    {        company: "CompanyName",        id: "3",        userProfile: {            id: "4",            telephone: "",            user: {                email: "some_email",                firstName: "Firstname",                lastName: "Lastname",                groups: [                    {id: "2", name: "Manager"}                ]            }        }    }]我想依靠group name。因此,我想要的结果是:{   "Manager": 2,   "Seller": 1,   "Remarketing Manager": 1,}我尝试用lodash countBy如下:countBy(users, 'userProfile.user.groups.name');但这是行不通的。https://jsfiddle.net/suf3db4y/1/
查看完整描述

2 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

您可以使用减少


let data = [{company: "CompanyName",id: "1",userProfile: {id: "2",telephone: "",user: {email: "some_email",firstName: "Firstname",lastName: "Lastname",groups: [{id: "2", name: "Manager"},{id: "10", name: "Remarketing Manager"}]}}},{company: "CompanyName",id: "2",userProfile: {id: "3",telephone: "",user: {email: "some_email",firstName: "Firstname",lastName: "Lastname",groups: [{id: "1", name: "Seller"}]}}},{company: "CompanyName",id: "3",userProfile: {id: "4",telephone: "",user: {email: "some_email",firstName: "Firstname",lastName: "Lastname",groups: [{id: "2", name: "Manager"}]}}}]


let final = data.reduce((op,{userProfile:{user:{groups}}}) => {

  groups.forEach(({name}) => {

    op[name] = op[name] || 0

    op[name]++

  })

  return op

},{})


console.log(final)


查看完整回答
反对 回复 2021-05-13
  • 2 回答
  • 0 关注
  • 531 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信