Javascript React:将嵌套json数据与父数据合并以创建多个对象
我有一个对JSON文件的API调用,其中包含一些事件。此活动有一个标题,但有多个放映时间。是否可以将嵌套数组与父对象合并,从而在没有嵌套数组的情况下创建n个新事件 事件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": [ {
{
"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}
这是可能的。