我有一个值events列表列表列表列表

我有一个值事件,它是一个带有如下地图的列表列表:

[
    [
        {
            "packageId": "2721",
            "eventTime": "2022-03-15T11:24:12.200864Z",
            "type": "created",
            "id": 831,
            "createdAt": "2022-03-15T11:24:12.200864Z",
            "createdBy": "47"
        }
    ],
    [
        {
            "packageId": "2738",
            "eventTime": "2022-03-15T11:24:12.200864Z",
            "type": "created",
            "id": 832,
            "createdAt": "2022-03-15T11:24:12.200864Z",
            "createdBy": "47"
        }
    ],
    [
        {
            "packageId": "2721",
            "eventTime": "2022-03-20T16:25:00Z",
            "type": "deviated-manually-overridden",
            "id": 842,
            "createdAt": "2022-03-20T16:26:00.363630Z",
            "createdBy": "47"
        },
        {

图片[1]-我有一个值events列表列表列表列表-唐朝资源网

"packageId": "2721", "eventTime": "2022-03-20T16:38:00Z", "type": "deviated-manually-overridden", "id": 844, "createdAt": "2022-03-20T16:38:46.352751Z", "createdBy": "47" }, { "packageId": "2721", "eventTime": "2022-03-20T20:31:00Z", "type": "collected-manually-overridden", "id": 846, "createdAt": "2022-03-20T20:32:18.046346Z", "createdBy": "47" }, { "packageId": "2721", "eventTime": "2022-03-15T11:24:12.200864Z", "type": "created", "id": 829, "createdAt": "2022-03-15T11:24:12.200864Z", "createdBy": "47" } ], [ { "packageId": "2738", "eventTime": "2022-03-20T16:25:00Z", "type": "deviated-manually-overridden", "id": 843, "createdAt": "2022-03-20T16:26:00.363630Z", "createdBy": "47"

图片[2]-我有一个值events列表列表列表列表-唐朝资源网

}, { "packageId": "2738", "eventTime": "2022-03-20T16:38:00Z", "type": "deviated-manually-overridden", "id": 845, "createdAt": "2022-03-20T16:38:46.352751Z", "createdBy": "47" }, { "packageId": "2738", "eventTime": "2022-03-15T11:24:12.200864Z", "type": "created", "id": 830, "createdAt": "2022-03-15T11:24:12.200864Z", "createdBy": "47" } ], [ { "packageId": "2721", "eventTime": "2022-03-15T11:24:12.200864Z", "type": "created", "id": 833, "createdAt": "2022-03-15T11:24:12.200864Z", "createdBy": "47" } ], [ { "packageId": "2738", "eventTime": "2022-03-15T11:24:12.200864Z", "type": "created", "id": 834, "createdAt": "2022-03-15T11:24:12.200864Z", "createdBy": "47" } ] ]

我想通过地图的 packageId 将此列表分组为一个列表,以便具有相同 packageId 的每个地图都是列表的一部分。同时,我还想过滤掉具有相同packageId、type和eventTime的映射,这样我就只有一个字段值相同的映射。我想要实现的是:

[
    [
        {
            "packageId": "2721",
            "eventTime": "2022-03-15T11:24:12.200864Z",
            "type": "created",
            "id": 831,
            "createdAt": "2022-03-15T11:24:12.200864Z",
            "createdBy": "47"
        },
        {
            "packageId": "2721",
            "eventTime": "2022-03-20T16:25:00Z",
            "type": "deviated-manually-overridden",
            "id": 842,
            "createdAt": "2022-03-20T16:26:00.363630Z",
            "createdBy": "47"
        },
        {
            "packageId": "2721",
            "eventTime": "2022-03-20T16:38:00Z",
            "type": "deviated-manually-overridden",
            "id": 844,

            "createdAt": "2022-03-20T16:38:46.352751Z",
            "createdBy": "47"
        },
        {
            "packageId": "2721",
            "eventTime": "2022-03-20T20:31:00Z",
            "type": "collected-manually-overridden",
            "id": 846,
            "createdAt": "2022-03-20T20:32:18.046346Z",
            "createdBy": "47"
        }
    ],
    [
        {
            "packageId": "2738",
            "eventTime": "2022-03-15T11:24:12.200864Z",
            "type": "created",
            "id": 832,
            "createdAt": "2022-03-15T11:24:12.200864Z",
            "createdBy": "47"
        },
        {
            "packageId": "2738",
            "eventTime": "2022-03-20T16:25:00Z",
            "type": "deviated-manually-overridden",
            "id": 843,
            "createdAt": "2022-03-20T16:26:00.363630Z",
            "createdBy": "47"
        },
        {
            "packageId": "2738",
            "eventTime": "2022-03-20T16:38:00Z",

图片[3]-我有一个值events列表列表列表列表-唐朝资源网

"type": "deviated-manually-overridden", "id": 845, "createdAt": "2022-03-20T16:38:46.352751Z", "createdBy": "47" } ] ]

我不确定如何使用 groupBy 或 filter 来实现这个数据结构。我试过了:

events.groupBy(listOfEvents => listOfEvents.map(e => e.get('packageId')))

但是,这显然行不通。我该怎么办?

更新:

我已尝试按照答案的建议创建地图:

const grouped = Map<string, List>()
  events.map(list => list.map(event => {
    const packageId = event?.get('packageId')
    console.log('packageId ', packageId)
    if (packageId) {
      console.log('grouped packageId: ', grouped.get(packageId))
      if (!grouped.get(packageId)) {
        grouped.set(packageId, List())
      }
      const updatedList = grouped.get(packageId)?.push(event)
      console.log('updatedList: ', updatedList)
      if (updatedList) grouped.set(packageId, updatedList)
      console.log('grouped: ', grouped)
    }
  }))
  console.log('grouped ', grouped)

但是,这并没有在 Map 中设置任何值,我看到 packageId 已记录,但其他所有内容都未定义并以 0 的大小分组。我在这里做错了什么?

© 版权声明
THE END
喜欢就支持一下吧
点赞245赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容