当前位置: 首页 > 知识库问答 >
问题:

在不知道物体深度的情况下移除另一个物体

莫欣悦
2023-03-14

如果我不知道一个物体的深度,我如何移除另一个物体内部的一个物体?

json对象

{
  "foo": {
     "1" : {
        "bar" : "a",
        "foo" : {
          "2" : "aa"
        }
      },
     "3" : {
        "bar" : "b",
        "foo" : {
          "4" : "bb"
        }
      }
   }
}

假设我想删除“4”,但是“4”可能是第一级孩子或者在另一个孩子里面?

共有2个答案

申屠喜
2023-03-14

迭代是关键:

function remove(obj, key) {
    for (k in obj) {
        if (k==key) {
            delete obj[k];
        }else if (typeof obj[k] === 'object') {
            remove(obj[k], key);
        }
    }
}

不停摆弄

贾骏喆
2023-03-14

这是另一个递归解决方案,我的版本和adeneo的版本的区别在于,一旦找到匹配的密钥,我的版本就会停止。如果您知道同一个密钥不会多次出现,或者您可以在每次调用中只删除其中一个,那么这将更加有效:

function remove(obj, key) {
    for (var k in obj) {
        if (k == key) {
            delete obj[key];
            return true;
        } else if (typeof obj[k] === "object") {
            if (remove(obj[k], key)) return true;
        }
    }
    return false;
}
 类似资料:
  • 我的屏幕上有两个组件,第一个是图像,第二个是下面的网格和图表。我想使图像居中,使其水平地位于中心,并且在第二个组件之上。第二个组件应该在图像的下方,而不是它的右边。我该怎么做呢? 我试过衬垫和对齐,但这些似乎对我不起作用。

  • 我真的需要一些帮助,我被卡住了。我试图在一个简单的游戏中让一个方块成为地面,另一个方块落在上面,然后可能会反弹一点,但是能够向左或向右移动盒子,从第一个方块上掉下来。有人能帮我吗? 对于任何对答案感兴趣的人,感谢PoprostuRonin和dermetfan的YouTube视频,我能够得到我正在寻找的结果,你可以在你的项目中尝试下面的代码,只需更改精灵纹理。

  • 问题内容: 我正在使用gob将结构序列化到磁盘。有问题的结构包含一个接口字段,因此具体类型需要使用进行注册。 这里的难题是,进行灌装的图书馆应忽略所使用的混凝土类型。我希望即使调用者定义了自己的接口实现,也可以进行序列化。 我可以通过动态注册类型来成功编码数据(请参见下面的简单示例),但是在尝试重新读取数据时,gob拒绝接受未注册的类型。它令人沮丧,因为感觉好像所有数据都在那里- 如果gob 标记

  • 这是删除函数 这是tableview控制器 这是表格视图单元格 我正在用核心数据执行crud操作。我已经执行了3个操作成功,工作很好,但是在删除操作中,我们不需要导航另一个控制器,只需要点击按钮操作就可以执行。我很困惑怎么做,我尝试了很多方法。

  • 问题内容: 目前,我正在此站点上抓取图表图表信息。要抓取信息,我需要为有很多镜头的情况做一个for循环。我可以通过单击“ Team Stats”并找到射门次数来找到射门次数。 我想做出适当的选择而不必找出拍摄数量。 我目前正在做什么: 任何帮助将不胜感激。请让我知道是否需要进一步的信息。 问题答案: 我不确定您的变量k是什么意思。 我从所有评论中获得了建议。

  • 我使用以下命令行与ffmpeg一起向没有任何音轨的视频添加音轨。