Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 - Fatal编程技术网

Javascript 从另一个数组中的数组中删除对象

Javascript 从另一个数组中的数组中删除对象,javascript,arrays,Javascript,Arrays,我有以下数据结构 menu: [ { id: 1, title: 'Test 1', children: [] }, { id: 2, title: 'Test 2', children: [ { id: 5, title: 'Test 5', children: [] }, { id: 6, title: 'Test 6', children: [] }, { id: 7, title:

我有以下数据结构

menu: [   { id: 1, title: 'Test 1', children: [] },
          { id: 2, title: 'Test 2', children: [
              { id: 5, title: 'Test 5', children: [] },
              { id: 6, title: 'Test 6', children: [] },
              { id: 7, title: 'Test 7', children: [] },
              { id: 8, title: 'Test 8', children: [] },
            ] },
          { id: 3, title: 'Test 3', children: [
              { id: 9, title: 'Test 9', children: [] },
              { id: 10, title: 'Test 10', children: [] },
              { id: 11, title: 'Test 11', children: [] },
              { id: 12, title: 'Test 12', children: [] },
            ]  },
          { id: 4, title: 'Test 4', children: [] },
        ]
如何删除标题为“测试5”的对象?还是从子阵列中的子阵列

onDeleteClick(item) {
    const menuCopy = JSON.parse(JSON.stringify(this.menu));
    const index = menuCopy.indexOf(item);
    if (index !== -1) {
      menuCopy.splice(index, 1);
    } else {
      menuCopy.map((el) => {
        if (el.children.length) {
          el.children.map((child) => {
            if (child.Id === item.Id) {
              console.log(child);
            }
          });
        }
      });
    }
    this.setMenu(menuCopy);
  }
我被困在这一点上。我认为这里应该使用递归,但我不知道如何实现它。

const菜单=[{id:1,标题:“测试1”,子项:[]},
{id:2,标题:“测试2”,子项:[
{id:5,标题:“测试5”,子项:[]},
{id:6,标题:“测试6”,儿童:[
{id:5,标题:“测试5”,子项:[]},
{id:7,标题:“测试7”,子项:[]},
{id:8,标题:“测试8”,子项:[]}
] },
{id:7,标题:“测试7”,子项:[]},
{id:8,标题:“测试8”,子项:[]},
] },
{id:3,标题:“测试3”,子项:[
{id:9,标题:“测试9”,子项:[]},
{id:10,标题:“测试10”,子项:[]},
{id:11,标题:'Test 11',子项:[]},
{id:12,标题:“测试12”,子项:[]},
]  },
{id:4,标题:“测试4”,子项:[]},
];
const excludeChildrenFromTitle=(arr,excludedChildTitle)=>{
返回arr.map((项目)=>{
const children=excludeChildrenFromTitle(item.children.filter((child)=>child.title!==excludedChildTitle),excludedChildTitle);
返回{
…项目,
儿童
}
});
};

console.log(不包括ChildrenFromTitle(菜单,“测试5”)
您可以
首先筛选每个第一级元素,然后使用
映射进行第二级筛选:

var l=[{id:1,title:'Test 1',children:[]},{id:2,title:'Test 2',children:[{id:5,title:'Test 5',children:[]},{id:6,title:'Test 6',children:[]},{id:8,title:'Test 8',children Test Test 2',children children:[]},{id:3,title:'Test 3',children id:9,title:[]},{id:10,标题:'Test 10',子项:[]},{id:11,标题:'Test 11',子项:[]},{id:12,标题:'Test 12',子项:[]},{id:4,标题:'Test 4',子项:[]},
{id:5,标题:“测试5”,子项:[]},];
常量removeTitleByValue=(arr,标题值)=>{
返回arr
.filter(e=>e.title!==titleValue)
.map((e2)=>{
const children=e2.children.filter((ch)=>ch.title!==titleValue);
返回{…e2,子项}
});
};
console.log(删除ITleByValue(l,‘测试5’))