javascript - 使用 javascript 展平嵌套的 json 数组
问题描述
我有以下 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"},
]
解决方案
有一些问题。
- 如果是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"
}]
}
];
- 它对你的输出有点困惑。这就是它投票否决的原因。
设置数组后,您可以使用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);
推荐阅读
- mysql - MySQL“LIKE”忽略俄语单词的结果
- html - 在 Ajax ActionLink MVC 调用中将输入值作为参数传递
- sql - 我可以在三个 select 语句之间创建多个 Union 吗?
- html - 关键帧动画不执行
- c# - 通过单击按钮获取 ListView 项的值
- vue.js - 为什么引用不存在的静态 nuxt 资产的图像不会触发 @error?
- ruby - 为什么我的绘图方法中存在错误(自动归因?)
- c - 取消引用 int 指针与 char 指针
- html - 冻结在没有 JavaScript 的情况下同时使用水平和垂直滚动的 HTML 表格的前两列和最后一列
- c# - 使用 Selenium C# 测试经过身份验证的网站