Typescript/Lodash group by -- 尝试将数组键的值及其数量分组

Typescript/Lodash group by -- Trying to group values of a key of an array with their quantity

代码:

    this.countSmth = _(data).groupBy('DeliveryStatus').values().map(
      (group) => ({ ...group[0], qty: group.length })
    ), console.log(this.countSmth);

我一直在尝试 this stackblitz and all works well, giving me the desired result. However in my project the end result looks like this(link).

我用作源的 HTTP 响应如下所示:

{
    {
        "BookingId": "VALUE",
        "OrderNumber": "VALUE",
        "ArrivalTime": "VALUE",
        "DepartureTime": "VALUE",
        "Duration": "VALUE",
        "DeliveryStatus": "Accepted"
    }
]

在我的 Angular 项目中,我使用 yarn 添加了 'lodash' 和 @types/lodash。我决定在相同的环境中测试相同的 stackblitz 文本,但它似乎不起作用,这意味着我在那里写错了。

编辑:我创建了一个 angular 项目并导入了相同的 lodash。我在这里用类型化数组替换了我得到的数据对象:

https://stackblitz.com/edit/angular-qbpnqc

在这个 stackblitz 中 _ 背后的库是什么?在 Lodash 中,你需要在最后一个 .value() 来从链中解包值。

经过 8 小时的故障排除和其他线程的一些帮助 + 同事的一些帮助,我最终得到了这个功能:

  let countUniqueValues = (data, key) => {
    return _(data).groupBy(key).values().map(
      (group) => ({ key: group[0][`${key}`], count: group.length })
    ).value()
  }

现在,当我更新我的商店时,我可以调用此函数来创建我想要的任何 kpi,方法是将来自操作的数据和我要计算其值的键传递给它。

我什至根本不用碰这个功能。