Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.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

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

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

如何过滤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"},

我想知道如何在嵌套的对象数组中删除子项中的status
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条件。