【问题标题】:Normalizr: normalize deep nested itemsNormalizr:规范化深层嵌套项
【发布时间】:2021-05-22 18:56:54
【问题描述】:

我有一个这样的数据数组

[
  {
    "id": "root_01",
    "parents": [
      {
        "id": "parent_1",
        "childrens": [
          {
            "id": "child_01",
            "name": "ABC",
            "group": "group_a"
          },
          {
            "id": "child_02",
            "name": "BBC",
            "group": "group_b"
          }
        ]
      },
      {
        "id": "parent_2",
        "childrens": [
          {
            "id": "child_03",
            "name": "CCD",
            "group": "group_a"
          },
          {
            "id": "child_04",
            "name": "EEF",
            "group": "group_c"
          }
        ]
      }
    ]
  },
  {} // same as previous
]

我正在尝试删除所有父母数据并仅捕获并合并像这样的子项目:

[
  {
    "id": "child_01",
    "name": "ABC",
    "group": "group_a"
  },
  {
    "id": "child_02",
    "name": "BBC",
    "group": "group_b"
  },
  {
    "id": "child_03",
    "name": "CCD",
    "group": "group_a"
  },
  {
    "id": "child_04",
    "name": "EEF",
    "group": "group_c"
  }
]

但在阅读normalizr 文档后,我有点困惑,因为我找不到这种示例,所以有人可以建议我是否可以使用 normalizr 或任何更好的想法?

谢谢

【问题讨论】:

标签: javascript json reactjs normalizr


【解决方案1】:

Recusrion 是你需要的:

const arr = [ { "id": "root_01", "parents": [ { "id": "parent_1", "childrens": [ { "id": "child_01", "name": "ABC", "group": "group_a" }, { "id": "child_02", "name": "BBC", "group": "group_b" } ] }, { "id": "parent_2", "childrens": [ { "id": "child_03", "name": "CCD", "group": "group_a" }, { "id": "child_04", "name": "EEF", "group": "group_c" } ] } ] }];

const flatten = arr => arr.flatMap(o=>o.parents ? flatten(o.parents) : o.childrens ? flatten(o.childrens) : o);

console.log(flatten(arr));

【讨论】:

    猜你喜欢
    • 2018-05-23
    • 2021-10-04
    • 2016-11-15
    • 2018-04-09
    • 2018-10-10
    • 2018-11-26
    • 2020-11-09
    • 2019-09-04
    • 2017-12-16
    相关资源
    最近更新 更多