但是删除的时候obj2并没有遍历删除,导致删除‘name’时会把obj2中的第一个对象删除,如何解决?(标签-数据结构|关键词-table)

 "table": [
        {
          "label": "设备编号",
          "prop": "date",
          "fixed":true,
          "sort":true,
        },
        {
          "label": "配送信息",
          "prop": "shippingInformation",
          "children": [
            {
              "label": "姓名",
              "prop": "name",
              "fixed":false,
              "sort":false,
            },
            {
              "label": "电话",
              "prop": "phone",
              "fixed":false,
              "sort":false,
            },
            {
              "label": "省份",
              "prop": "province",
              "fixed":false,
              "sort":false,
            },
            {
              "label": "城市",
              "prop": "city",
              "fixed":false,
              "sort":false,
            },
            {
              "label": "住址",
              "prop": "address",
              "fixed":false,
              "sort":false,
            }
          ],
        }
    ]


find(obj,obj2,prop){
      console.log('传进来的没选中的标签:',prop)
      console.log("传进来的不改变筛选数组:",obj)
      for(let i;ilength;i++){
        console.log('遍历每一项',obj[i])
        if(obj[i].prop===prop){
          console.log("删除前的table2:",this.table2)
          obj2.splice(i,1)//这里出的问题
          console.log("删除后的table2:",this.table2)
          break
        }
        if(obj[i].children){
          console.log("有小孩")
          this.find(obj[i].children,prop)
        }
      }
      },

prop数组

img


数据结构如上,我把table深拷贝了两份分别是obj和obj2,我把每个对象最底层的prop全都取出来放在一个数组里,根据传进来的每个prop,在obj2中删除prop所在的对象。但是删除的时候obj2并没有遍历删除,导致删除‘name’时会把obj2中的第一个对象删除

想循环过程中删除,你需要倒序遍历,否则会导致obj元素的位置发生变化,那么有些位置就跳过了没有遍历到
或者把for循环改为while(obj.length>0)
不要变量i,每次取0,删0