繁体   English   中英

如何删除数组中的空 object?

[英]How to remove empty object in array?

我正在尝试从以下结构中删除空的 object {}。

data =  [{
            "total" : "value",
            "status" : "statusVal",
            "recs" : [{
                    "total" : "value",
                    "region" : "name",
                    "recs" : [{},{
                            "recs" : [{
                                    "recs" : [{
                                            "value" : "a",
                                            "label" : "fn"
                                        }]
                                }]
                        }]
                }]
        }]

这是我的 JavaScript 代码,我在其中处理数据并尝试从结果中删除空的 object。

var result = json.parse(data);
for(var i=0;i<result.length;i++){
   if(result[i].hasOwnProperty("recs")){
      var fset = result[i].recs;
      for(var j=0;j<fset.length;j++){
         if(fset[j].recs === undefined || fset[j].recs === null){
            delete fset[j].recs;
         }
         if(fset[j].hasOwnProperty("recs")){
           var sset = fset[i].recs;
             for(var k=0;k<sset.length;k++){
                var tset = sset[i].recs;
                if(sset[k].hasOwnProperty("recs")){
                   for(var z=0;z<tset.length;z++){
                      if(tset[z].hasOwnProperty("recs")){
                         //  logic to push 
                      }
                   }
                }
             }
         }
      }
   }
}

我尝试检查 null 和未定义以及属性检查布尔为 false。 由于空 {} 总是返回长度为 1,这也被排除在外。 我被困在这里处理空 object 的删除。

上面的代码正在删除整个 recs 节点。 你能帮我找到我缺少的东西吗?

检查Object.keys()的长度,看 object 是否为空。

Object.keys(fset[j].recs).length === 0 

您不能手动迭代数组的所有动态级别,因此最好编写具有递归 function 调用的 function 。

 var data = [{ "total": "value", "status": "statusVal", "recs": [{ "total": "value", "region": "name", "recs": [{}, { "recs": [{ "recs": [{ "value": "a", "label": "fn" }] }] }] }] }] function removeEmpty(ary) { ary.forEach((item, index) => { if (Object.keys(item).length === 0) { ary.splice(index, 1); } else if (item.recs && item.recs.length > 0) removeEmpty(item.recs) }); } removeEmpty(data) console.log(data)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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