Javascript 如何使用映射或forEach解析对象内部的对象数组
我的JSON数据如下所示:Javascript 如何使用映射或forEach解析对象内部的对象数组,javascript,json,foreach,javascript-objects,Javascript,Json,Foreach,Javascript Objects,我的JSON数据如下所示:{ “对象”:[ { “名称”:“案例1”, “说明”:“案例1说明”, “形状”:[ { “形状名称”:“圆” } ], “订单参考”:[ { “id”:“2233” } ] }, { “名称”:“案例2”, “说明”:“案例2说明”, “形状”:[ { “形状名称”:“心脏” }, { “形状名称”:“方形” } ], “订单参考”:[ { “id”:“1212” } ] } ] } 我需要根据数据创建一个表。 该表应如下所示: Id Shape
{
“对象”:[
{
“名称”:“案例1”,
“说明”:“案例1说明”,
“形状”:[
{
“形状名称”:“圆”
}
],
“订单参考”:[
{
“id”:“2233”
}
]
},
{
“名称”:“案例2”,
“说明”:“案例2说明”,
“形状”:[
{
“形状名称”:“心脏”
},
{
“形状名称”:“方形”
}
],
“订单参考”:[
{
“id”:“1212”
}
]
}
]
}
我需要根据数据创建一个表。
该表应如下所示:
Id Shape Name Description
2233 Circle Case1 Desc of case1
1212 Heart Case2 Desc of case2
1212 Square Case2 Desc of case2
我尝试使用maps解析JSON数据:我能够获得名称和描述,但无法进入形状和顺序参考。您可以建议我使用maps或forEach的解决方案吗?您可以在forEach中执行forEach,例如:
let array = [
{
name: "case1",
description: "description of case1",
shapes: [
{
shape_name: "circle"
}
],
order_ref: [
{
id: "2233"
}
]
},
{
name: "case2",
description: "description of case2",
shapes: [
{
shape_name: "heart"
},
{
shape_name: "square"
}
],
order_ref: [
{
id: "1212"
}
]
}
];
let newArray = [];
array.forEach(obj => {
obj.shapes.forEach(shape => {
let newObj = Object.assign({}, obj);
newObj.shape_name = shape.shape_name;
delete newObj.shapes;
newObj.id = obj.order_ref[0].id;
delete newObj.order_ref;
newArray.push(newObj);
});
});
console.log(newArray);
获取新数组后,您可以使用并按照正常方式迭代它您需要两个forEach()
来实现该表
你可以试试下面的方法
var数据={
“对象”:[
{
“名称”:“案例1”,
“说明”:“案例1说明”,
“形状”:[
{
“形状名称”:“圆”
}
],
“订单参考”:[
{
“id”:“2233”
}
]
},
{
“名称”:“案例2”,
“说明”:“案例2说明”,
“形状”:[
{
“形状名称”:“心脏”
},
{
“形状名称”:“方形”
}
],
“订单参考”:[
{
“id”:“1212”
}
]
}
]
}
var tr='';
data.objects.forEach(o=>{
o、 shapes.forEach(io=>{
tr+=`${o.order\u ref[0].id}${io.shape\u name}${o.name}${o.description}`;
});
});
document.querySelector(“#tableData tbody”).insertAdjacentHTML('beforeend',tr)代码>
表,th,td{
边框:1px纯黑;
}
td:第一个字母{
文本转换:大写
}
身份证件
形状
名称
描述
如果您需要每个订单参考id和形状的条目,您可以使用forEach,如下所示:
let jsonArray = {
"objects": [
{
"name": "case1",
"description": "description of case1",
"shapes": [
{
"shape_name": "circle"
}
],
"order_ref": [
{
"id": "2233"
}
]
},
{
"name": "case2",
"description": "description of case2",
"shapes": [
{
"shape_name": "heart"
},
{
"shape_name": "square"
}
],
"order_ref": [
{
"id": "1212"
}
]
}
]
}
let output = [];
jsonArray.objects.forEach(object => {
object.order_ref.forEach(order => {
object.shapes.forEach(shape => {
output.push({
id: order.id,
shape: shape.shape_name,
name: object.name,
description: object.description
})
})
})
})
基本上,你只需要做同样的事情,但要降低一个层次。。也许发布你所做的代码,以获取名称和描述你迄今为止所做的工作?你需要帮助的地方在哪里?