使用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