【问题标题】:Flatten nested json array using javascript使用 javascript 展平嵌套的 json 数组
【发布时间】:2018-06-14 15:38:52
【问题描述】:

我有以下 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"},
]

【问题讨论】:

  • 这个问题有什么问题?请在投反对票前发表评论。
  • 感谢@Luis 纠正 json
  • 您应该发布您当前的尝试。如果你没有在自己的尝试中挣扎,那么你就没有在学习。
  • 问题应该是“我怎样才能从A到B”,然后它显示你在问这样的问题之前付出了多少努力:)
  • 您应该始终将您尝试过的内容放在帖子中,这样您就不必对答案发表评论以增加您想要的精确度,并且它向人们表明您在询问之前确实付出了努力.

标签: javascript arrays multidimensional-array ecmascript-6


【解决方案1】:

有一些问题。

  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);

【讨论】:

    【解决方案2】:

    您可以使用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);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      • 2022-01-08
      • 2021-10-12
      • 2017-12-26
      • 2020-11-12
      • 2015-08-15
      • 2016-09-29
      相关资源
      最近更新 更多