首页 > 解决方案 > 如何识别嵌套数组中的对象并根据JS forLoop中的条件删除索引

问题描述

我有这个嵌套对象数组,其中唯一标识符是 UUID

"statement":[
     {
        "boolean":"AND",
        "statement":[
           {
              "name":"long",
              "table":"testOne",
              "uuid":"cbb7e16b-42fc-4914-8119-cc51434ecb35",
           },
           {
              "boolean":"AND",
              "statement":[
                 {
                    "name":"float",
                    "table":"testOne",
                    "uuid":"87cac127-dda3-4435-ad1f-ae7e1a718f64",
                 }
              ]
           }
        ]
     }
]

我还有一个对象

{
  "name":"float",
  "table":"testOne",
  "uuid":"87cac127-dda3-4435-ad1f-ae7e1a718f64",
}

我可以在语句的嵌套对象内部进行跟踪并根据 UUID 删除 JSON 中的特定对象吗?

标签: javascriptarraysfor-looplodash

解决方案


您可以在下面执行此操作,这将通过递归删除所需的对象。

mainFunction(){
                 let jsonData = {
                    "statement": [
                        {
                            "boolean": "AND",
                            "statement": [
                                {
                                    "name": "long",
                                    "table": "testOne",
                                    "uuid": "cbb7e16b-42fc-4914-8119-cc51434ecb35",
                                },
                                {
                                    "boolean": "AND",
                                    "statement": [
                                        {
                                            "name": "float",
                                            "table": "testOne",
                                            "uuid": "87cac127-dda3-4435-ad1f-ae7e1a718f64",
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                };
                let searchObj = {
                    "name": "float",
                    "table": "testOne",
                    "uuid": "87cac127-dda3-4435-ad1f-ae7e1a718f64",
                };
                recursion(jsonData['statement'], searchObj);
            }


            recursion(data_list, obj){
               data_list.map(function (item, index) {
                   if(!item.hasOwnProperty('statement')){
                       if(item['uuid'] == obj['uuid']) {
                           data_list.splice(index, 1);
                           return data_list
                       }
                   }else{
                       recursion(item['statement'], obj)
                   }
               });
               return data_list
            },

推荐阅读