代码之家  ›  专栏  ›  技术社区  ›  developer

使用javascript展开嵌套json数组

  •  -2
  • developer  · 技术社区  · 6 年前

    我有以下json数组:

    [  
        { id: 1, name: "P1", groups: [ { id: 1.1, name: "G1.1" }, { id: 1.2, name:"G1.2" }]}, 
        { id: 2, name: "P2",  groups: [ { id: 2.1, name: "G2.1" }, { id: 2.2, name:"G2.2" }]} 
    ];
    

    使用javascript es6将其转换为以下结构的最有效方法是什么?

    [ 
        { id: 1, name: "P1", group_id: 1.1, group_name: "G1.1"},
        { id: 1, name: "P1", group_id: 1.2, group_name: "G1.2"},
        { id: 2, name: "P2", group_id: 1.1, group_name: "G2.1"},
        { id: 2, name: "P2", group_id: 1.1, group_name: "G2.2"},
    ]
    
    2 回复  |  直到 6 年前
        1
  •  0
  •   amrender singh    6 年前

    你可以通过使用 forEach 。 请尝试以下操作:

    var arr=[  
        { id: 1, name: "P1", groups: [ { id: 1.1, name: "G1.1" }, { id: 1.2, name:"G1.2" }]}, 
        { id: 2, name: "P2",  groups: [ { id: 2.1, name: "G2.1" }, { id: 2.2, name:"G2.2" }]}
    ];
    
    
    result = [];
    
    arr.forEach((o)=>{
      o.groups.forEach((group)=>{
        result.push({
          "id" : o.id,
          "name" : o.name,
          "group_id" : group.id,
          "group_name" : group.name
        });
      });
    });
    
    console.log(result);
        2
  •  1
  •   Darshana Pathum    6 年前

    有一些问题。

    1. 如果是json数组,应该是这样的。

    var obj = [{
        "id": 1,
        "name": "P1",
        "groups": [{
            "id": 1.1,
            "name": "G1.1"
        }, {
            "id": 1.2,
            "name": "G1.2"
        }]
    },
    {
        "id": 2,
        "name": "P2",
        "groups": [{
            "id": 2.1,
            "name": "G2.1"
        }, {
            "id": 2.2,
            "name": "G2.2"
        }]
    }
    ];
    

    you can validate json arrays using this link


    1. 你的出局有点混乱,所以才投了反对票。

    设置数组后,可以使用 ForEach 为此。

    var obj = [{
        "id": 1,
        "name": "P1",
        "groups": [{
            "id": 1.1,
            "name": "G1.1"
        }, {
            "id": 1.2,
            "name": "G1.2"
        }]
    },
    {
        "id": 2,
        "name": "P2",
        "groups": [{
            "id": 2.1,
            "name": "G2.1"
        }, {
            "id": 2.2,
            "name": "G2.2"
        }]
    }
    ];
    
    res = [];
    
    obj.forEach((e)=>{
      e.groups.forEach((group)=>{
        res.push({
          "id" : e.id,
          "name" : e.name,
          "group_id" : group.id,
          "group_name" : group.name
        });
      });
    });
    
    console.log(res);