Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.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 如何递归地从嵌套JSON中删除所有空数组子项[]_Javascript_Jquery_Json_Lodash - Fatal编程技术网

Javascript 如何递归地从嵌套JSON中删除所有空数组子项[]

Javascript 如何递归地从嵌套JSON中删除所有空数组子项[],javascript,jquery,json,lodash,Javascript,Jquery,Json,Lodash,我有一个JSON响应,如下所示。我正在使用来自我的GeorgeRegionCountries的嵌套JSON数据APIController&自定义类TreeView用于根据我正在使用的插件所需的嵌套结构格式化数据。我正在使用一个组合多选树视图使用这个jquery插件多选下拉树插件你可以通过这个链接看到它 我想删除所有带有空数组的“sub” [ { "Id": 1, "Title": "United States"

我有一个JSON响应,如下所示。我正在使用来自我的GeorgeRegionCountries的嵌套JSON数据APIController&自定义类TreeView用于根据我正在使用的插件所需的嵌套结构格式化数据。我正在使用一个组合多选树视图使用这个jquery插件多选下拉树插件你可以通过这个链接看到它

我想删除所有带有空数组的“sub”

         [
          {
            "Id": 1,
            "Title": "United States",
            "ParentId": null,
            "Subs": [
              {
                "Id": 7,
                "Title": "Northwest",
                "ParentId": 1
              },
              {
                "Id": 8,
                "Title": "Northeast",
                "ParentId": 1
              },
              {
                "Id": 9,
                "Title": "Central",
                "ParentId": 1
              },
              {
                "Id": 10,
                "Title": "Southwest",
                "ParentId": 1
              },
              {
                "Id": 18,
                "Title": "Southeast",
                "ParentId": 1
              }
            ]
          },
          {
            "Id": 2,
            "Title": "Canada",
            "ParentId": null
          },
          {
            "Id": 3,
            "Title": "France",
            "ParentId": null
          },
          {
            "Id": 4,
            "Title": "Germany",
            "ParentId": null
          },
          {
            "Id": 5,
            "Title": "Australia",
            "ParentId": null
          },
          {
            "Id": 6,
            "Title": "United Kingdom",
            "ParentId": null
          }
        ]
深层清洁的最好方法是什么?我在Stackopverflow中尝试了不同的解决方案,但我得到的只是对象,而不是空的sub,这是我不想要的

      [
          {
            "Id": 1,
            "Title": "United States",
            "ParentId": null,
            "Subs": [
              {
                "Id": 7,
                "Title": "Northwest",
                "ParentId": 1,
                Object object
              },
              {
                "Id": 8,
                "Title": "Northeast",
                "ParentId": 1,
                Object object
              },
              {
                "Id": 9,
                "Title": "Central",
                "ParentId": 1,
                Object object
              },
              {
                "Id": 10,
                "Title": "Southwest",
                "ParentId": 1,
                Object object
              },
              {
                "Id": 18,
                "Title": "Southeast",
                "ParentId": 1,
                Object object
              }
            ]
          },
          {
            "Id": 2,
            "Title": "Canada",
            "ParentId": null,
            Object object
          },
          {
            "Id": 3,
            "Title": "France",
            "ParentId": null,
            Object object
          },
          {
            "Id": 4,
            "Title": "Germany",
            "ParentId": null,
            Object object
          },
          {
            "Id": 5,
            "Title": "Australia",
            "ParentId": null,
            Object object
          },
          {
            "Id": 6,
            "Title": "United Kingdom",
            "ParentId": null,
            Object object
          }
        ]

这不是我想要的

正确答案是:

let数组=[
{
“Id”:1,
"标题":"美国",,
“ParentId”:null,
“潜艇”:[
{
Id:7,,
"标题":"西北",,
“ParentId”:1,
‘Subs’:[]
},
{
Id:8,,
‘标题’:‘东北’,
“ParentId”:1,
‘Subs’:[]
},
{
“Id”:9,
“标题”:“中央”,
“ParentId”:1,
‘Subs’:[]
},
{
“Id”:10,
"标题":"西南",,
“ParentId”:1,
‘Subs’:[]
},
{
Id:18,
‘头衔’:‘东南’,
“ParentId”:1,
‘Subs’:[]
}
]
},
{
“Id”:2,
‘头衔’:‘加拿大’,
“ParentId”:null,
‘Subs’:[]
},
{
"Id":3,,
‘标题’:‘法国’,
“ParentId”:null,
‘Subs’:[]
},
{
“Id”:4,
"标题":"德国",,
“ParentId”:null,
‘Subs’:[]
},
{
“Id”:5,
‘标题’:‘澳大利亚’,
“ParentId”:null,
‘Subs’:[]
},
{
“Id”:6,
‘头衔’:‘联合王国’,
“ParentId”:null,
‘Subs’:[]
}
]
让newArray=array.map(项=>{
if(item.Subs.length==0){
删除项目.Subs
退货项目
}
item.Subs=item.Subs.map(item=>{
if(item.Subs.length==0){
删除项目.Subs
退货项目
}
})
退货项目
}
)

console.log(newArray)
您可以使用
..transform()
递归检查特定键(
Subs
),并在其值为空时将其删除:

const{transform,isObject,isEmpty}=;
常量removempty=(对象,键)=>
变换(obj,(r,v,k)=>{
如果(k==key&&isEmpty(v))返回;
r[k]=等深线(v)?移除(v,键):v;
});
const tree=[{“Id”:1,“Title”:“United States”,“ParentId”:null,“Subs”:[{“Id”:7,“Title”:“Northwest”,“ParentId”:1,“Subs”:[]},{“Id”:8,“Title”:“Northwest”,“ParentId”:1,“Subs”:[]},{“Id”:10,“Title”:“Southwest”,“ParentId”:1,“Subs”:[]},{“Id”:18,“Title”:“东南”,“ParentId”:1,“Subs”:[]},{“Subs”:“加拿大”、“家长Id:null”,Subs:[]},{“Id:3”,Title:“法国”、“家长Id:null”,Subs:[]},{“Id:4”,Title:“德国”、“家长Id:null”,Subs:[]},{“Id:5”,Title:“澳大利亚”、“家长Id:null”,Subs:[]},{“Id:6”,Title:“英国”、“家长Id:null”,Subs:[]]
const result=removempty(树“Subs”);
console.log(结果);
let数据=[
{
“Id”:1,
“标题”:“美国”,
“ParentId”:空,
“潜艇”:[
{
“Id”:7,
“头衔”:“西北”,
“家长ID”:1,
“潜艇”:[]
},
{
“Id”:8,
“头衔”:“东北”,
“家长ID”:1,
“潜艇”:[]
},
{
“Id”:9,
“标题”:“中央”,
“家长ID”:1,
“潜艇”:[]
},
{
“Id”:10,
“头衔”:“西南”,
“家长ID”:1,
“潜艇”:[]
},
{
“Id”:18,
“头衔”:“东南”,
“家长ID”:1,
“潜艇”:[]
}
]
},
{
“Id”:2,
“标题”:“加拿大”,
“ParentId”:空,
“潜艇”:[]
},
{
“Id”:3,
“标题”:“法国”,
“ParentId”:空,
“潜艇”:[]
},
{
“Id”:4,
“标题”:“德国”,
“ParentId”:空,
“潜艇”:[]
},
{
“Id”:5,
“标题”:“澳大利亚”,
“ParentId”:空,
“潜艇”:[]
},
{
“Id”:6,
“标题”:“联合王国”,
“ParentId”:空,
“潜艇”:[]
}
];
data=data.map(行=>{
如果(!row.Subs.length){
设{Subs,…r}=行;
返回r;
}返回行
})

console.log(data);
编写两个函数,并将遍历数组的函数传递给数据映射函数,如下所示

函数格式数据(val){
如果(val.Subs.length>0)val.Subs.map(a=>a.Subs.length>0?格式化数据(a.Subs):deleteSubs(a));
else-deleteSubs(val);
返回val;
}
函数deleteSubs(val){
删除val.SUB;
}
风险值数据=[{
“Id”:1,
“标题”:“美国”,
“ParentId”:空,
“潜艇”:[{
“Id”:7,
“头衔”:“西北”,
“家长ID”:1,
“潜艇”:[]
},
{
“Id”:8,
“头衔”:“东北”,
“家长ID”:1,
“潜艇”:[]
},
{
“Id”:9,
“标题”:“中央”,
“家长ID”:1,
“潜艇”:[]
},
{
“Id”:10,
“头衔”:“西南”,
“家长ID”:1,
“潜艇”:[]
},
{
“Id”:18,
“头衔”:“东南”,
“家长ID”:1,
“潜艇”:[]
}
]
},
{
“Id”:2,
“标题”:“加拿大”,
“ParentId”:空,
“潜艇”:[]
},
{
“Id”:3,
“标题”:“法国”,
“ParentId”:空,
“潜艇”:[]
},
{
“Id”:4,
“标题”:“德国”,
“ParentId”:空,
“潜艇”:[]
},
{
“Id”:5,
“标题”:“澳大利亚”,
“帕伦
      [
          {
            "Id": 1,
            "Title": "United States",
            "ParentId": null,
            "Subs": [
              {
                "Id": 7,
                "Title": "Northwest",
                "ParentId": 1,
                Object object
              },
              {
                "Id": 8,
                "Title": "Northeast",
                "ParentId": 1,
                Object object
              },
              {
                "Id": 9,
                "Title": "Central",
                "ParentId": 1,
                Object object
              },
              {
                "Id": 10,
                "Title": "Southwest",
                "ParentId": 1,
                Object object
              },
              {
                "Id": 18,
                "Title": "Southeast",
                "ParentId": 1,
                Object object
              }
            ]
          },
          {
            "Id": 2,
            "Title": "Canada",
            "ParentId": null,
            Object object
          },
          {
            "Id": 3,
            "Title": "France",
            "ParentId": null,
            Object object
          },
          {
            "Id": 4,
            "Title": "Germany",
            "ParentId": null,
            Object object
          },
          {
            "Id": 5,
            "Title": "Australia",
            "ParentId": null,
            Object object
          },
          {
            "Id": 6,
            "Title": "United Kingdom",
            "ParentId": null,
            Object object
          }
        ]