在嵌套属性中使用 lodash 运算符

我有对象数组

{
  "agent_name": "AgentName",
  "analytics": [
    {
      "date": "Tue, 1 Aug 2021 00:00:00 GMT",
      "intents_count":[
         {
           "count": 5,
           "intent": "intent1"
         },
         {
          "count": 1,
          "intent": "intent2"
         },
         {
           "count": 0,
           "intent": "intent3"
         },
       ]
    },
    {
      "date": "Tue, 2 Aug 2021 00:00:00 GMT",
      "intents_count":[
         {
           "count": 5,
           "intent": "intent1"
         },
         {
          "count": 1,
          "intent": "intent2"
         },
         {
           "count": 0,
           "intent": "intent3"
         },
       ]
    },
    ... the same for the next days of month
  ]
}

我需要获取按日期分组的每个意图的计数总和。

结果应该是这样的:

[10, 2, 0]

其中 10 对应于所有天中意图“intent1”的计数字段的总和。

回答

您需要先平展并选择所需的数组“分析”。然后使用 groupBy 和 sum 得到最终结果。

let data = {
"agent_name": "AgentName",
"analytics": [
{
"date": "Tue, 1 Aug 2021 00:00:00 GMT",
"intents_count":[
{
"count": 5,
"intent": "intent1"
},
{
"count": 1,
"intent": "intent2"
},
{
"count": 0,
"intent": "intent3"
},
]
},
{
"date": "Tue, 2 Aug 2021 00:00:00 GMT",
"intents_count":[
{
"count": 5,
"intent": "intent1"
},
{
"count": 1,
"intent": "intent2"
},
{
"count": 0,
"intent": "intent3"
},
]
},
]
}
let flatResult = _.flatMap(data.analytics, 'intents_count');
let result = _(flatResult).groupBy('intent').map(x => _.sumBy(x, 'count'));
console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>

以上是在嵌套属性中使用 lodash 运算符的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>