如何解决结合groupBy,将行转置为对象属性并计数行
我有这个对象数组:
[
{
"vp": "VIHAB","situacao": "Analisando manifestação do notificado","id": "267"
},{
"vp": "VIGOV","situacao": "Concluído com proposição de ações corretivas","id": "234"
},{
"vp": "VINOV","id": "261"
},"id": "260"
},{
"vp": "VICAT","id": "265"
},"id": "266"
},"id": "244"
},"id": "243"
},"id": "245"
},"id": "246"
},"id": "247"
},"situacao": "Concluído sem proposição de ações corretivas","id": "263"
},"id": "264"
},{
"vp": "VIRED","id": "253"
},"id": "249"
},"id": "250"
},"id": "252"
},"id": "251"
},"id": "248"
},"id": "237"
},"id": "262"
},"id": "254"
},"id": "259"
},"id": "255"
},"id": "256"
},"id": "257"
},"id": "258"
},{
"vp": "VIHAB","id": "226"
},"situacao": "Concluído sem notificação","id": "236"
},"id": "242"
},"id": "240"
},"id": "241"
},"id": "239"
},"id": "238"
},"id": "221"
},"id": "228"
},"id": "232"
},"id": "233"
},"id": "231"
},"id": "235"
},{
"vp": "VILOP","id": "229"
},"id": "230"
},"id": "223"
},"id": "219"
},"id": "227"
},"id": "222"
},{
"vp": "VICOR","situacao": "Aguardando manifestação de outros gestores","id": "164"
},"id": "217"
},"id": "218"
},"id": "166"
},{
"vp": "VIMAR","id": "225"
},"id": "215"
},"id": "216"
},"id": "19"
},"id": "171"
},"id": "208"
},"id": "220"
},"id": "212"
},"id": "211"
},"id": "207"
},"id": "12"
},"id": "172"
},"id": "10"
},"id": "167"
},"id": "151"
},"id": "152"
},"id": "153"
},"id": "147"
},"id": "148"
},"id": "154"
},"id": "150"
},"id": "137"
},{
"vp": "VIART","id": "146"
},"id": "158"
},"id": "168"
},"id": "63"
},"id": "145"
},"id": "122"
},"id": "210"
},"id": "121"
},"id": "209"
},"id": "120"
},"id": "165"
},"id": "169"
},"id": "170"
},"id": "136"
},"id": "66"
},"id": "62"
},"id": "57"
},"id": "92"
},"id": "79"
},"id": "29"
},"id": "160"
},"id": "159"
},"id": "143"
},"id": "144"
},"id": "14"
},"id": "80"
},"id": "114"
},"id": "113"
},"id": "149"
}
]
我需要创建一个按“vp”分组的新对象数组,将“situacao”的值转换为一个属性,并计算相同“vp”具有相同状态“situacao”的“id”数量,像这样:
[
{
"vp": "VIHAB","Analisando manifestação do notificado": 1,"Concluído com proposição de ações corretivas": 5,"Concluído sem proposição de ações corretivas": 6,},{
"vp": "VINOV","Concluído com proposição de ações corretivas": 10,"Concluído sem proposição de ações corretivas": 11,]
有没有办法做到这一点?我对这种组合没有任何解释
解决方法
我已将您的对象数组分配给数据变量。
var data = [
{
"vp": "VIHAB","situacao": "Analisando manifestação do notificado","id": "267"
},{
"vp": "VIGOV","situacao": "Concluído com proposição de ações corretivas","id": "234"
},{
"vp": "VINOV","id": "261"
},"id": "260"
},{
"vp": "VICAT","id": "265"
},"id": "266"
},"id": "244"
},"id": "243"
},"id": "245"
},"id": "246"
},"id": "247"
},"situacao": "Concluído sem proposição de ações corretivas","id": "263"
},"id": "264"
},{
"vp": "VIRED","id": "253"
},"id": "249"
},"id": "250"
},"id": "252"
},"id": "251"
},"id": "248"
},"id": "237"
},"id": "262"
},"id": "254"
},"id": "259"
},"id": "255"
},"id": "256"
},"id": "257"
},"id": "258"
},{
"vp": "VIHAB","id": "226"
},"situacao": "Concluído sem notificação","id": "236"
},"id": "242"
},"id": "240"
},"id": "241"
},"id": "239"
},"id": "238"
},"id": "221"
},"id": "228"
},"id": "232"
},"id": "233"
},"id": "231"
},"id": "235"
},{
"vp": "VILOP","id": "229"
},"id": "230"
},"id": "223"
},"id": "219"
},"id": "227"
},"id": "222"
},{
"vp": "VICOR","situacao": "Aguardando manifestação de outros gestores","id": "164"
},"id": "217"
},"id": "218"
},"id": "166"
},{
"vp": "VIMAR","id": "225"
},"id": "215"
},"id": "216"
},"id": "19"
},"id": "171"
},"id": "208"
},"id": "220"
},"id": "212"
},"id": "211"
},"id": "207"
},"id": "12"
},"id": "172"
},"id": "10"
},"id": "167"
},"id": "151"
},"id": "152"
},"id": "153"
},"id": "147"
},"id": "148"
},"id": "154"
},"id": "150"
},"id": "137"
},{
"vp": "VIART","id": "146"
},"id": "158"
},"id": "168"
},"id": "63"
},"id": "145"
},"id": "122"
},"id": "210"
},"id": "121"
},"id": "209"
},"id": "120"
},"id": "165"
},"id": "169"
},"id": "170"
},"id": "136"
},"id": "66"
},"id": "62"
},"id": "57"
},"id": "92"
},"id": "79"
},"id": "29"
},"id": "160"
},"id": "159"
},"id": "143"
},"id": "144"
},"id": "14"
},"id": "80"
},"id": "114"
},"id": "113"
},"id": "149"
}
];
代码是
var result = _.map(_.groupBy(data,x => x.vp),(group) => _.merge({ vp: group[0].vp},_.countBy(group,x => x.situacao)));
这段代码的输出看起来像,
[
{
"vp": "VIHAB","Analisando manifestação do notificado": 1,"Concluído com proposição de ações corretivas": 6,"Concluído sem proposição de ações corretivas": 3
},{
"vp": "VIGOV","Concluído com proposição de ações corretivas": 4,"Concluído sem notificação": 1
},{
"vp": "VINOV","Concluído com proposição de ações corretivas": 11,"Concluído sem proposição de ações corretivas": 16,"Concluído sem notificação": 6
},{
"vp": "VICAT","Concluído sem proposição de ações corretivas": 11,"Concluído sem notificação": 3
},{
"vp": "VIRED","Concluído sem proposição de ações corretivas": 2,"Concluído com proposição de ações corretivas": 3
},{
"vp": "VILOP","Concluído com proposição de ações corretivas": 2,"Concluído sem notificação": 4
},{
"vp": "VICOR","Aguardando manifestação de outros gestores": 1
},{
"vp": "VIMAR","Concluído sem proposição de ações corretivas": 7,"Concluído com proposição de ações corretivas": 6
},{
"vp": "VIART","Concluído com proposição de ações corretivas": 1
}
]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。