如何过滤javascript中嵌套数组中的对象数组
我想知道如何在嵌套的对象数组中删除子项中的status如何过滤javascript中嵌套数组中的对象数组,javascript,arrays,object,Javascript,Arrays,Object,我想知道如何在嵌套的对象数组中删除子项中的statusdeleted, 在javascript中,下面的代码返回不能返回未定义错误的筛选器, 我有obj,子键应该只包含活动状态 var obj = [ {id:1, label: "sample", children: [{id: 0, status: "Active", name: "xyz"}, {id: 1, status: "Deleted", name: "abc"}]} {id:2, label: "example"},
deleted
,
在javascript中,下面的代码返回不能返回未定义错误的筛选器,
我有obj
,子键应该只包含活动状态
var obj = [
{id:1, label: "sample", children: [{id: 0, status: "Active", name: "xyz"}, {id: 1, status: "Deleted", name: "abc"}]}
{id:2, label: "example"},
{id:3, label: "details", children: [{id:1, status: "Active", name: "finance"}]}
]
var result = removeDeleted(obj);
function removeDeleted(obj){
if (obj.length > 0) {
var list= obj.map(e => {
e.children = e.children.map(child => {
child.children = child.children.filter(c =>
c['status'] !== "Deleted"
);
return child
});
return e
});
return list;
}
}
Expected Output:
[
{id:1, label: "sample", children: [{id: 0, status: "Active", name: "xyz"}]}
{id:2, label: "example"},
{id:3, label: "details", children: [{id:1, status: "Active", name: "finance"}]}
]
您可以尝试以下方法:
var obj=[
{id:1,标签:“sample”,子项:[{id:0,状态:“Active”,名称:“xyz”},{id:1,状态:“Deleted”,名称:“abc”}]},
{id:2,标签:“example”},
{id:3,标签:“详细信息”,子项:[{id:1,状态:“活动”,名称:“财务”}]
]
var结果=移除(obj);
控制台日志(结果);
删除的功能(obj){
返回对象映射(i=>{
如果(i.儿童){
var c=i.children.filter(j=>j.status!='Deleted');
返回{id:i.id,label:i.label,子项:c};
}
否则我会回来;
});
}
如果您有多个属性,最好对其进行分解
var obj=[{id:1,标签:“sample”,子项:[{id:0,状态:“Active”,名称:“xyz”},{id:1,状态:“Deleted”,名称:“abc”},{id:2,标签:“example”},{id:3,标签:“details”,子项:[{id:1,状态:“Active”,名称:“finance”}];
var result=obj.map(({children,…rest})=>{
if(children)children=children.filter(({status})=>status=='Active');
如果(儿童)返回{…休息,儿童};
回程休息
});
控制台日志(结果)代码>在数组的某些对象中可能不存在子对象,因此只需在筛选和映射之前检查if条件。