Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.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 React:将嵌套json数据与父数据合并以创建多个对象_Javascript_Arrays_Json_Reactjs_Jsx - Fatal编程技术网

Javascript React:将嵌套json数据与父数据合并以创建多个对象

Javascript React:将嵌套json数据与父数据合并以创建多个对象,javascript,arrays,json,reactjs,jsx,Javascript,Arrays,Json,Reactjs,Jsx,我有一个对JSON文件的API调用,其中包含一些事件。此活动有一个标题,但有多个放映时间。是否可以将嵌套数组与父对象合并,从而在没有嵌套数组的情况下创建n个新事件 事件 { "publication_date": "8.1.2021 4:18", "title": "Camerata Salzburg", "showtime": [ {

我有一个对JSON文件的API调用,其中包含一些事件。此活动有一个标题,但有多个放映时间。是否可以将嵌套数组与父对象合并,从而在没有嵌套数组的情况下创建n个新事件

事件

{
    "publication_date": "8.1.2021 4:18",
    "title": "Camerata Salzburg",
    "showtime": [
        {
            "date_start": "2021-02-05",
            "location": "Konzerthaus"
        },
        {
            "location": "Konzerthaus",
            "date_start": "2021-02-07"
        }
    ],
}
{
    "publication_date": "8.1.2021 4:18",
    "title": "Camerata Salzburg",
    "date_start": "2021-02-05",
    "location": "Konzerthaus"
},
{
    "publication_date": "8.1.2021 4:18",
    "title": "Camerata Salzburg",
    "location": "Konzerthaus",
    "date_start": "2021-02-07"
}
我希望我的活动怎么样

{
    "publication_date": "8.1.2021 4:18",
    "title": "Camerata Salzburg",
    "showtime": [
        {
            "date_start": "2021-02-05",
            "location": "Konzerthaus"
        },
        {
            "location": "Konzerthaus",
            "date_start": "2021-02-07"
        }
    ],
}
{
    "publication_date": "8.1.2021 4:18",
    "title": "Camerata Salzburg",
    "date_start": "2021-02-05",
    "location": "Konzerthaus"
},
{
    "publication_date": "8.1.2021 4:18",
    "title": "Camerata Salzburg",
    "location": "Konzerthaus",
    "date_start": "2021-02-07"
}

您可以在阵列上使用
map
功能并创建新阵列。如果原始数据也是数组,则可以先映射它,然后映射内部数组。这将创建一个数组,但您可以将它们合并到一个数组中

const数据=[{
“出版日期”:“8.1.2021 4:18”,
“头衔”:“卡梅拉塔萨尔茨堡”,
“展示时间”:[
{
“开工日期”:“2021-02-05”,
“地点”:“Konzerthaus”
},
{
“地点”:“Konzerthaus”,
“开始日期”:“2021-02-07”
}
],
}]
const newData=data.map(title=>title.showtime.map(e=>({
发布日期:title.publication\u date,
标题:标题,标题,
开始日期:即开始日期,
地点:e.地点
}))).flat();

log(newData)
这里是一个使用

在我看来,这更容易推理,但确实需要依赖性。所以,如果您是javascript新手,我建议您现在继续使用@Todds解决方案。但是,如果您获得了更多的经验,并进行了更多的数据处理,那么可能需要重新审视一下

//const objectScan=require('object-scan');
const myData=[{出版日期:'8.1.2021 4:18',标题:'Camerata Salzburg',展示时间:[{日期开始:'2021-02-05',地点:'Konzerthaus',地点:'Konzerthaus',日期开始:'2021-02-07'}];
常量展平=(数据)=>objectScan(['[*].showtime[*]']{
反面:错,
filterFn:({value,gparent,context})=>{
const{publication_date,title}=gparent;
push({publication_date,title,…value});
}
})(数据,[]);
console.log(展平(myData));
/* => [
{出版日期:'8.1.2021 4:18',标题:'Camerata Salzburg',日期:'2021-02-05',地点:'Konzerthaus'},
{出版日期:'8.1.2021 4:18',标题:'Camerata Salzburg',地点:'Konzerthaus',开始日期:'2021-02-07'}
]*/
。作为控制台包装{最大高度:100%!重要;顶部:0}

这是可能的。