Typescript/Lodash 按组分 -- 尝试按其数量将数组中的一个键的值进行分组

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

我是一名有用的助手,可以翻译文本。

我一直在尝试使用这个StackBlitz,一切都正常,给了我想要的结果。但是在我的项目中,最终结果看起来像这个(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


underscore.js还是lodash?问题中没有angular或typescript,标签可以删除。 - tokland
2个回答

1

经过8个小时的故障排除,以及在另一个线程中得到的一些帮助和同事的协助,我最终得到了这个函数:

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

现在,当我更新我的商店时,我可以调用这个函数来创建任何我想要的KPI,只需传递来自操作的数据和我想要计数的键。 我甚至不需要修改函数。

0
这个 StackBlitz 中使用的 _ 库是什么?在 Lodash 中,你需要在链式调用的末尾添加 .value() 来获取链式调用的值。

嗯,我尝试过将它添加到 lodash 链的末尾,但似乎没有什么区别。我使用了 import * as _ from "lodash" 并通过 Yarn 安装了它。 - SebastianG
通常你会写:import _ from 'lodash';。尝试在这里的控制台中运行你的代码:https://lodash.com/ - tokland
我已经创建了一个运行Angular的StackBlitz,并以相同的方式安装了所有内容,为简单起见,输入了我的数据数组的缩小版本,我将在其中工作:https://stackblitz.com/edit/angular-qbpnqc - SebastianG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接