大家好,我想问一些关于从对象数组创建新对象数组的问题.我需要修改数据,因为我需要在react native with victory库中创建分组条形图.需要调整当前数据以创建图表

数据如下所示

[
            {
                "date": "April 2022",
                "phase": [
                    {
                        "phaseName": "initiation",
                        "days": 7
                    },
                    {
                        "phaseName": "justification",
                        "days": 6
                    },
                    {
                        "phaseName": "planning",
                        "days": 4
                    }
                ]
            },
            {
                "date": "Mei 2022",
                "phase": [
                    {
                        "phaseName": "justification",
                        "days": 44
                    },
                    {
                        "phaseName": "partner-selection",
                        "days": 32
                    },
                    {
                        "phaseName": "planning",
                        "days": 40
                    },
                    {
                        "phaseName": "initiation",
                        "days": 25
                    },
                    {
                        "phaseName": "signing",
                        "days": 5
                    }
                ]
            },
            {
                "date": "Juni 2022",
                "phase": [
                    {
                        "phaseName": "signing",
                        "days": 6
                    },
                    {
                        "phaseName": "planning",
                        "days": 54
                    },
                    {
                        "phaseName": "justification",
                        "days": 36
                    },
                    {
                        "phaseName": "initiation",
                        "days": 28
                    },
                    {
                        "phaseName": "partner-selection",
                        "days": 30
                    }
                ]
            }
]

如何创建这样的数据?(胜利接受的数据)

[
  {
    x:'April 2022', 
    y: 7, 
    type: 'initiation'
    
  },
  { 
    x: 'Mei 2022', 
    y: 44, 
    type: 'justification' 
    
  }, 
  { 
    x: 'Juni 2022', 
    y: 6, 
    type: 'signing' 
    
  }
],
[
  { 
    x: 'April 2022', 
    y: 6, 
    type: 'justification' 
    
  }, 
  { 
    x: 'Mei 2022', 
    y: 32, 
    type: 'partner-selection' 
    
  }, 
  { 
    x: 'Juni 2022', 
    y: 54, 
    type: 'planning'
  }
],
[
  { 
    x: 'April 2022', 
    y: 4, 
    type: 'planning' 
    
  }, 
  { 
    x: 'Mei 2022',
    y: 40, 
    type: 'planning' 
    
  }, 
  { 
    x: 'Juni 2022', 
    y: 36, 
    type: 'justification' 
    
  }
],
[
  { 
    x: 'Mei 2022', 
    y: 25, 
    type: 'initiation'
  }, 
  { 
    x: 'Juni 2022', 
    y: 28, 
    type: 'initiation'
  }
],
[
  { 
    x: 'Mei 2022', 
    y: 5, 
    type: 'signing'
  }, 
  { 
    x: 'Juni', 
    y: 30, 
    type: 'partner-selection'
      
  }
]

推荐答案

您可以重命名和转置这些项.

const
    data = [{ date: "April 2022", phase: [{ phaseName: "initiation", days: 7 }, { phaseName: "justification", days: 6 }, { phaseName: "planning", days: 4 }] }, { date: "Mei 2022", phase: [{ phaseName: "justification", days: 44 }, { phaseName: "partner-selection", days: 32 }, { phaseName: "planning", days: 40 }, { phaseName: "initiation", days: 25 }, { phaseName: "signing", days: 5 }] }, { date: "Juni 2022", phase: [{ phaseName: "signing", days: 6 }, { phaseName: "planning", days: 54 }, { phaseName: "justification", days: 36 }, { phaseName: "initiation", days: 28 }, { phaseName: "partner-selection", days: 30 }] }],
    result = data.reduce((r, { date: x, phase }) => {
        phase.forEach(({ phaseName: type, days: y }, i) => {
            r[i] ??= [];
            r[i].push({ x, y, type });
        });
        return r;
    }, []);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

Javascript相关问答推荐

通过使用100%间隔时间来代表我们还剩多少时间来倒计时

if/else JavaScript中的条件行为

如何从JSON数组添加Google Maps标记—或者如何为数组添加参数到标记构造器

使用JQuery单击元素从新弹出窗口获取值

使用领域Web SDK的Vite+Vue应用程序中的Web程序集(WASM)错误

用于在路径之间移动图像的查询

400 bad request error posting through node-fetch

如何使用TypeScrip设置唯一属性?

未加载css colored颜色 ,无法将div设置为可见和不可见

一个实体一刀VS每个实体多刀S

删除加载页面时不存在的元素(JavaScript)

WebSocketException:远程方在未完成关闭握手的情况下关闭了WebSocket连接.&#三十九岁;

如何使用Astro优化大图像?

在渲染turbo流之后滚动到元素

通过跳过某些元素的对象进行映射

使用Reaction窗体挂钩注册日历组件

为什么当雪碧的S在另一个函数中时,Phaser不能加载它?

我如何才能获得价值观察家&对象&S的价值?

使用Java脚本在div中创建新的span标记

如何将值从后端传递到前端