Javascript-从嵌套对象数组中删除对象
我有一个嵌套对象数组,我想从该嵌套数组中删除一个项,但由于某些原因,这似乎不适用于我的方法: 对象Javascript-从嵌套对象数组中删除对象,javascript,arrays,object,ecmascript-6,Javascript,Arrays,Object,Ecmascript 6,我有一个嵌套对象数组,我想从该嵌套数组中删除一个项,但由于某些原因,这似乎不适用于我的方法: 对象 export const completeNavigationItemsV2Response=[ { id:“Erlebiniskategorien”, 标题:“Erlebiniskategorien”, uri:“/on/demandware.store/Sites JSShop Site/default/SearchJS Show”, 儿童:[ { id:‘弗列根倒下了’, 标题:《堕落与春天
export const completeNavigationItemsV2Response=[
{
id:“Erlebiniskategorien”,
标题:“Erlebiniskategorien”,
uri:“/on/demandware.store/Sites JSShop Site/default/SearchJS Show”,
儿童:[
{
id:‘弗列根倒下了’,
标题:《堕落与春天》,
uri:“/fliegen fall/fall springen,默认值,sc.html”,
儿童:[
{
id:‘堕落的春天’,
标题:《堕落与春天》,
uri:“/fliegen fall/fall springen,默认值,sc.html”,
儿童:[],
}
],
},
{
id:‘Wet Weg’,
标题:“Reisen&Kurzurlaub”,
uri:“/reisen/Weit-Weg,默认值,sc.html”,
儿童:[
{
id:“staedtereisen”,
标题:“Städtereisen”,
uri:“/reisen/staedtereisen,默认值,sc.html”,
儿童:[],
}
],
},
{
id:“汽车动力”,
标题:“汽车动力”,
uri:“/geschenke maenner/motorpower,默认值,sc.html”,
儿童:[
{
id:“rennwagen”,
标题:“Rennwagen”,
uri:“/motorpower/rennwagen,默认值,sc.html”,
儿童:[],
}
],
},
{
id:'10',
标题:“Erlebnisse麻省理工学院之星”,
uri:“/erlebnisse mit stars/l/10”,
儿童:[
{/如果您想在对象的任何级别使用它,可以使用如下递归函数:
//对象是相同的,只是缩小了
const completeNavigationItemsV2Response=[{id:“erlebiniskategorien”,title:“erlebiniskategorien”,uri:“/on/demandware.store/Sites JSShop Site/default/SearchJS Show”,children:[{id:“fliegen fall”,title:“fall&Springen”,uri:“/fliegen fall/fall Springen,default,sc.html”,children:[{id:“fall Springen”,title:“fall&Springen”,uri:“/fliegen-fall/fall-springen,default,sc.html”,children:[]},{id:“Weit-Weg”,title:“Reisen&Kurzurlaub”,uri:“/Reisen/Weit-Weg,default,sc.html”,children:[]},{id:“staedtereisen”,title:“motorpower”,uri:“/geschenke-maenner/motorpower,default,sc.html”,children:[{id:“rennwagen”,title:“rennwagen”,uri:“/motorpower/rennwagen,default,sc.html”,children:[]},{id:“10”,title:“Erlebnisse-mit-Stars”,uri:“/Erlebnisse-mit-Stars/l/l/10”,children:[{id:“glossar”,title:“glossar”,uri:“/erlebnistanderstandort/glossar,default,pg.html”,children:[]}];
常量removeItemWithId=(数组,id)=>{
返回数组
.filter(obj=>obj.id!==id)//如果id匹配,则过滤掉
.map(obj=>({//对子对象(如果存在)执行相同的操作)
…obj,
子项:obj.children!==未定义
?removeItemWithId(对象儿童,id)
:未定义
}));
};
log(removeItemWithId(completeNavigationItemsV2Response,'glossar'));
如果您想在对象的任何级别使用它,可以使用如下递归函数:
//对象是相同的,只是缩小了
const completeNavigationItemsV2Response=[{id:“erlebiniskategorien”,title:“erlebiniskategorien”,uri:“/on/demandware.store/Sites JSShop Site/default/SearchJS Show”,children:[{id:“fliegen fall”,title:“fall&Springen”,uri:“/fliegen fall/fall Springen,default,sc.html”,children:[{id:“fall Springen”,title:“fall&Springen”,uri:“/fliegen-fall/fall-springen,default,sc.html”,children:[]},{id:“Weit-Weg”,title:“Reisen&Kurzurlaub”,uri:“/Reisen/Weit-Weg,default,sc.html”,children:[]},{id:“staedtereisen”,title:“motorpower”,uri:“/geschenke-maenner/motorpower,default,sc.html”,children:[{id:“rennwagen”,title:“rennwagen”,uri:“/motorpower/rennwagen,default,sc.html”,children:[]},{id:“10”,title:“Erlebnisse-mit-Stars”,uri:“/Erlebnisse-mit-Stars/l/l/10”,children:[{id:“glossar”,title:“glossar”,uri:“/erlebnistanderstandort/glossar,default,pg.html”,children:[]}];
常量removeItemWithId=(数组,id)=>{
返回数组
.filter(obj=>obj.id!==id)//如果id匹配,则过滤掉
.map(obj=>({//对子对象(如果存在)执行相同的操作)
…obj,
子项:obj.children!==未定义
?removeItemWithId(对象儿童,id)
:未定义
}));
};
console.log(removitemWithId(completeNavigationItemsV2Response,'glossar'));
虽然比ES6新,但如果您可以支持,您可以通过在初始数组上调用.flatMap()
然后在子数组上调用它来递归执行此操作。如果您找到要删除的元素,可以返回空数组[]
,它将在连接到结果数组中时删除对象。
const arr=[{id:'Erlebniskategorien',title:'Erlebniskategorien',uri:'/on/demandware.store/Sites JSShop Site/default/SearchJS Show',children:[{id:'fliegen fall',title:'fall&Springen',uri:'/fliegen fall/fall Springen,default sc.html',children[{id:'fall-springen',title:'fall&springen',uri:'/fliegen-fall/fall-springen,default,sc.html',children:[],},},{id:'Weit-Weg',title:'Reisen&Kurzurlaub',uri:'/Reisen/Weit-Weg,
export const completeNavigationItemsV2Response = [
{
id: 'Erlebniskategorien',
title: 'Erlebniskategorien',
uri: '/on/demandware.store/Sites-JSShop-Site/default/SearchJS-Show',
children: [
{
id: 'fliegen-fallen',
title: 'Fallen & Springen',
uri: '/fliegen-fallen/fallen-springen,default,sc.html',
children: [
{
id: 'fallen-springen',
title: 'Fallen & Springen',
uri: '/fliegen-fallen/fallen-springen,default,sc.html',
children: [],
}
],
},
{
id: 'Weit-Weg',
title: 'Reisen & Kurzurlaub',
uri: '/reisen/Weit-Weg,default,sc.html',
children: [
{
id: 'staedtereisen',
title: 'Städtereisen',
uri: '/reisen/staedtereisen,default,sc.html',
children: [],
}
],
},
{
id: 'motorpower',
title: 'Motorpower',
uri: '/geschenke-maenner/motorpower,default,sc.html',
children: [
{
id: 'rennwagen',
title: 'Rennwagen',
uri: '/motorpower/rennwagen,default,sc.html',
children: [],
}
],
},
{
id: '10',
title: 'Erlebnisse mit Stars',
uri: '/erlebnisse-mit-stars/l/10',
children: [
{ // <== remove this object with id === 'glossar'
id: 'glossar',
title: 'Glossar',
uri: '/erlebnisstandorte/glossar,default,pg.html',
children: [],
},
],
},
],
}
];