首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带parent参数的JS Reduce

带parent参数的JS Reduce
EN

Stack Overflow用户
提问于 2020-03-21 22:13:08
回答 1查看 84关注 0票数 1

我正在尝试解决我的reduce函数的最后一个问题,即将嵌套的JSON对象转换为平面列表,以便更容易地进行搜索。

将JSON放在下面

代码语言:javascript
复制
    {
  "MovementPatterns": [
    {
      "Id": "",
      "Name": "Warm-up",
      "Exercises": [
        {
          "Id": "",
          "Name": "Lizard Stretch",
          "Level": 1,
          "EquipmentRequired": ""
        },
        {
          "Id": "",
          "Name": "Pigeon Stretch",
          "Level": 1,
          "EquipmentRequired": ""
        },
        {
          "Id": "",
          "Name": "Core Hold",
          "Level": 1,
          "EquipmentRequired": ""
        },
        {
          "Id": "",
          "Name": "Superman",
          "Level": 1,
          "EquipmentRequired": ""
        }
      ]
    },
    {
      "Name": "Horizontal Push",
      "Id": "",
      "Exercises": [
        {
          "Id": "",
          "Name": "Wall Push-up",
          "Level": 0,
          "VideoUrl": "",
          "EquipmentRequired": ""
        },
        {
          "Id": "",
          "Name": "Push-up",
          "Level": 1,
          "EquipmentRequired": ""
        },
        {
          "Id": "",
          "Name": "Tap Push-up",
          "Level": 2,
          "EquipmentRequired": ""
        },
        {
          "Id": "",
          "Name": "Explosive Push-up",
          "Level": 3,
          "EquipmentRequired": ""
        }
      ]
    }
  ]
}

我使用了以下代码:

代码语言:javascript
复制
const exercises = data.MovementPatterns.reduce(
  (a, {Exercises}) => [...a, ...Exercises, ...a],
  [],
);

将来自每个运动模式的所有练习扁平化到一个纯exercises...This列表中是很棒的,但我现在需要在该JSON中为每个练习包含父运动模式ID,例如

代码语言:javascript
复制
[
        {
          "Id": "",
          "Name": "Lizard Stretch",
          "Level": 1,
          "MovementPatternId": 1,
          "EquipmentRequired": ""
        },
....
        {
          "Id": "",
          "Name": "Wall Push-up",
          "Level": 1,
          "MovementPatternId": 2,
          "EquipmentRequired": ""
        },
]

有人能帮我弄清楚如何使用reduce函数来做这件事吗?)

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-21 22:37:40

你就快成功了。只需将父元素的Id作为MovementPatternId附加到Exercises的每个元素即可。

代码语言:javascript
复制
const exercises = ab.MovementPatterns.reduce(
  (a, { Exercises, Id }) => [
    ...a,
    ...Exercises.map(e => ({ ...e, MovementPatternId: Id }))
  ],
  []
);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60788823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档