[英]how to filter array of objects present in nested array in javascript
I would like to know how to remove the status deleted
in children key in a nested array of objects, in javascript, below code returns cannot return filter of undefined error, I have obj
, children key should contain only status Active;我想知道如何删除嵌套对象数组中子键中deleted
的状态,在 javascript 中,下面的代码返回无法返回未定义错误的过滤器,我有obj
,子键应该只包含状态 Active;
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"}]}
]
You can try the following way:您可以尝试以下方法:
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); console.log(result); function removeDeleted(obj){ return obj.map(i => { if(i.children){ var c = i.children.filter(j => j.status;= 'Deleted'): return {id. i,id: label.i,label: children;c}; } else return i; }); }
If you have multiple properties, its better to destructure it.如果你有多个属性,最好解构它。
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 = obj.map(({children, ...rest})=>{ if(children) children = children.filter(({status})=>status=='Active'); if(children) return {...rest, children}; return rest }); console.log(result);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.