从javascript数组中删除嵌套的空值

从javascript数组中删除嵌套的空值,javascript,arrays,multidimensional-array,Javascript,Arrays,Multidimensional Array,我的javascript数组如下所示。我想删除所有子数组中的所有空值。我设法删除如下内容。但我正在寻找比这更优雅的解决方案 让数据=[ { 识别号:359816ba-4bc6-4b7f-b57c-d80331eee0a6, 名称:组织1, 类型:org, 标题:组织1, 儿童:[ 无效的 { id:6571cada-490c-41db-97e8-197a9c0faabb, 名称:地点3, 组织id:359816ba-4bc6-4b7f-b57c-D8033EEE0A6, 类型:位置, 标题:地

我的javascript数组如下所示。我想删除所有子数组中的所有空值。我设法删除如下内容。但我正在寻找比这更优雅的解决方案

让数据=[ { 识别号:359816ba-4bc6-4b7f-b57c-d80331eee0a6, 名称:组织1, 类型:org, 标题:组织1, 儿童:[ 无效的 { id:6571cada-490c-41db-97e8-197a9c0faabb, 名称:地点3, 组织id:359816ba-4bc6-4b7f-b57c-D8033EEE0A6, 类型:位置, 标题:地点3, 儿童:[ 无效的 { id:8620fce9-f7d0-442a-86e8-f58e9029a164, 名称:第三区, 区域设置\u id:空, 位置号:6571cada-490c-41db-97e8-197a9c0faabb, 类型:区域, 标题:3区, 儿童:[ 无效的 无效的 无效的 ] }, 无效的 无效的 ] }, { id:93b8ad9e-59ee-4de5-ac32-d3d5d19b083c, 名称:地点4, 组织id:359816ba-4bc6-4b7f-b57c-D8033EEE0A6, 类型:位置, 标题:地点4, 儿童:[ 无效的 无效的 { id:db14daf4-4488-47fa-8d18-2d213b3a54a5, 名称:第四区, 区域设置\u id:空, 位置号:93b8ad9e-59ee-4de5-ac32-d3d5d19b083c, 类型:区域, 标题:4区, 儿童:[ 无效的 无效的 { id:6ae5b04a-1101-4d73-80e4-05d4db454406, gwId:E4956E45107R, 分区id:db14daf4-4488-47fa-8d18-2d213b3a54a5, 组织id:359816ba-4bc6-4b7f-b57c-D8033EEE0A6, 标题:E4:95:6E:45:10:7R } ] }, { id:c01398c6-7650-426b-936d-6b88b1b507f2, 名称:第五区, 区域设置\u id:空, 位置号:93b8ad9e-59ee-4de5-ac32-d3d5d19b083c, 类型:区域, 标题:第5区, 儿童:[ 无效的 无效的 无效的 ] } ] }, 无效的 ] }, { 识别号:46665d49-020d-411f-9f11-c9ddad9a741c, 名称:组织2, 类型:org, 标题:组织2, 儿童:[ 无效的 无效的 无效的 无效的 ] }, { id:95e7d05b-fe67-422d-8617-9f10633ea6f6, 名称:组织3, 类型:org, 标题:组织3, 儿童:[ 无效的 无效的 无效的 { id:0a8509d8-1fd8-486c-8457-3ff393c09abc, 名称:组织3的位置1, 组织id:95e7d05b-fe67-422d-8617-9f10633ea6f6, 类型:位置, 标题:组织3的位置1, 儿童:[ 无效的 无效的 无效的 无效的 ] } ] } ] 让orgs=data.filterorg=>org!=无效的 orgs.forEachorg=>{ org.children=org.children.filterlocation=>location!=null; } orgs.forEachorg=>{ org.children.forEachloc=>{ loc.children=loc.children.filterzone=>zone!=null; } } orgs.forEachorg=>{ org.children.forEachloc=>{ loc.children.forEachzone=>{ zone.children=zone.children.filterrouter=>router!=null; } } } console.logorgs; 您可以以不变的方式递归过滤数组

或者变异版本是:

 const noNull = array => {
    const result = array.filter(it => it !== null);

    for(const value of result)
      if(value.children) value.children = noNull(value.children);

   return result;
 };

但是,您的数据中没有单个空值…添加了错误的数据。现在有空值
 const noNull = array => {
    const result = array.filter(it => it !== null);

    for(const value of result)
      if(value.children) value.children = noNull(value.children);

   return result;
 };