Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用映射或forEach解析对象内部的对象数组_Javascript_Json_Foreach_Javascript Objects - Fatal编程技术网

Javascript 如何使用映射或forEach解析对象内部的对象数组

Javascript 如何使用映射或forEach解析对象内部的对象数组,javascript,json,foreach,javascript-objects,Javascript,Json,Foreach,Javascript Objects,我的JSON数据如下所示:{ “对象”:[ { “名称”:“案例1”, “说明”:“案例1说明”, “形状”:[ { “形状名称”:“圆” } ], “订单参考”:[ { “id”:“2233” } ] }, { “名称”:“案例2”, “说明”:“案例2说明”, “形状”:[ { “形状名称”:“心脏” }, { “形状名称”:“方形” } ], “订单参考”:[ { “id”:“1212” } ] } ] } 我需要根据数据创建一个表。 该表应如下所示: Id Shape

我的JSON数据如下所示:
{
“对象”:[
{
“名称”:“案例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
            })
        })
    })
})

基本上,你只需要做同样的事情,但要降低一个层次。。也许发布你所做的代码,以获取名称和描述你迄今为止所做的工作?你需要帮助的地方在哪里?