Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.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 如何识别嵌套数组中的对象并根据JS forLoop中的条件删除索引_Javascript_Arrays_For Loop_Lodash - Fatal编程技术网

Javascript 如何识别嵌套数组中的对象并根据JS forLoop中的条件删除索引

Javascript 如何识别嵌套数组中的对象并根据JS forLoop中的条件删除索引,javascript,arrays,for-loop,lodash,Javascript,Arrays,For Loop,Lodash,我有一个嵌套对象数组,其中唯一标识符是UUID "statement":[ { "boolean":"AND", "statement":[ { "name":"long", "table":"testOne", "uuid":"cbb7e16b-42fc-4914-8119-cc51434ecb35", },

我有一个嵌套对象数组,其中唯一标识符是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中的特定对象

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

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
            },

以下代码将帮助您获得所需的结果

let 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 removeObj = {
   "name":"float",
   "table":"testOne",
   "uuid":"87cac127-dda3-4435-ad1f-ae7e1a718f64",
}

function checkUUID(arr) {
    for(let i=0; i < arr.length; i++) {
       if (arr[i].hasOwnProperty('uuid')) {
          if(removeObj.uuid === arr[i].uuid) {
            delete arr[i];
          } else {
            console.log('value not equal');
          }
       } else {
          checkUUID(arr[i].statement)
       }
    }
};

checkUUID(statement[0].statement);
let语句=[{
“布尔”:“和”,
“声明”:[
{
“名称”:“长”,
“表”:“testOne”,
“uuid”:“cbb7e16b-42fc-4914-8119-cc51434ecb35”,
},
{
“布尔”:“和”,
“声明”:[{
“名称”:“浮动”,
“表”:“testOne”,
“uuid”:“87cac127-dda3-4435-ad1f-ae7e1a718f64”,
}]
}
]}];
让removeObj={
“名称”:“浮动”,
“表”:“testOne”,
“uuid”:“87cac127-dda3-4435-ad1f-ae7e1a718f64”,
}
函数checkUUID(arr){
for(设i=0;i
那么您想从json中删除下面提到的对象吗?您所说的特定索引到底是什么意思?是的。我想在嵌套的json中进行跟踪,并基于UUID删除该对象。是否对定义的json结构进行了必要的编辑,或者它可以更嵌套?json可以嵌套到更多级别。