Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.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_Filter - Fatal编程技术网

使用JavaScript过滤数组中的嵌套对象

使用JavaScript过滤数组中的嵌套对象,javascript,arrays,filter,Javascript,Arrays,Filter,我试图从嵌套数组中获取数据 我的意见: layout: { parent: [ { type: "tabset", id: "tab1", children: [ { type: "tab", id: "id1", }, { type: "tab", id: &qu

我试图从嵌套数组中获取数据

我的意见:

layout: {
  parent: [
   {
    type: "tabset",
    id: "tab1",
    children: [
      {
        type: "tab",
        id: "id1",
      },
      {
        type: "tab",
        id: "id2",
      },
    ],
  },
  {
    type: "tabset",
    id: "tab2",
    children: [
      {
        type: "tab",
        id: "id3",
      },
    ],
  },
],},
我只想从我的输入中删除id为“id2”的对象,下面是我的代码:

layout.parent.filter((item) => item.children.filter((el) => el.id !== "id2"));
我想要的输出:

layout: {
  parent: [
   {
    type: "tabset",
    id: "tab1",
    children: [
      {
        type: "tab",
        id: "id1",
      },
    ],
  },
  {
    type: "tabset",
    id: "tab2",
    children: [
      {
        type: "tab",
        id: "id3",
      },
    ],
  },
],},
但我的代码工作不正常。请帮助我解释并提出一些新的解决方法


非常感谢

使用赋值将子数组替换为筛选版本

const布局={
家长:[{
键入:“tabset”,
id:“tab1”,
儿童:[{
键入:“制表符”,
id:“id1”,
},
{
键入:“制表符”,
id:“id2”,
},
],
},
{
键入:“tabset”,
id:“tab2”,
儿童:[{
键入:“制表符”,
id:“id3”,
}]
}
]
}
layout.parent.forEach(parent=>{
parent.children=parent.children.filter(e=>e.id!=='id2')
})
控制台日志(布局)
就个人而言,我们应该使用数据,而不是对其进行变异:)

您可以像这样使用
Array#map
Array#filter

const layout={parent:[{type:“tabset”,id:“tab1”,children:[{type:“tab”,id:“id1”,},{type:“tab”,
id:“id2”,},,},{type:“tabset”,id:“tab2”,子项:[{type:“tab”,id:“id3”,}]};
const result=layout.parent.map(({type,id,children})=>
({type,id,children:children.filter(c=>c.id!==“id2”)});

log({parent:result})您的代码输出是什么?@Majurageer它与我的输入相同:((是的,很好。谢谢您的帮助。这回答了您的问题吗?如果您需要帮助,请告诉我。^^!如果对您有用,请别忘了接受我的回答。@@dacoten