繁体   English   中英

如何过滤 javascript 中嵌套数组中存在的对象数组

[英]how to filter array of objects present in nested array in javascript

我想知道如何删除嵌套对象数组中子键中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"}]}
]


您可以尝试以下方法:

 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; }); }

如果你有多个属性,最好解构它。

 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM