javascript - 在不知道深度的情况下移除另一个对象内的对象

标签 javascript jquery json object

如果我不知道它的深度,如何删除另一个对象内的对象?

Json 对象

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

假设我想删除“4”,但“4”可能是第一级子级或位于另一个子级内?

最佳答案

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

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

关于javascript - 在不知道深度的情况下移除另一个对象内的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18410706/

相关文章:

html - 展开一个部分时折叠其他部分

javascript - 有什么优雅的方式告诉 IE7 及以下版本的用户离开吗?

python - 将 JSON 对象解析为 Django 模板

json - 将 Swift Codable 类迁移到 Realm

python - 基于文本的数据格式,支持多行字符串

javascript - 在函数中对变量进行分组 - 第 2 部分

javascript - MMENU根本不起作用

javascript - 修改指令中的模板(动态添加另一个指令)

javascript - 正则表达式 javascript 的数字格式

javascript - Opera 中的声音通知