Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.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-从嵌套对象数组中删除对象_Javascript_Arrays_Object_Ecmascript 6 - Fatal编程技术网

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: [],
                    },
                ],
            },
        ],
    }
];