结合groupBy,将行转置为对象属性并计数行

如何解决结合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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?