Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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 搜索一个JSON对象并返回一个比给定key:value高一级的key?_Javascript_Json - Fatal编程技术网

Javascript 搜索一个JSON对象并返回一个比给定key:value高一级的key?

Javascript 搜索一个JSON对象并返回一个比给定key:value高一级的key?,javascript,json,Javascript,Json,这感觉像是一个基本的问题,但我对编码是新手,我就是找不到答案。(我已经在谷歌上搜索过很多次了。) 下面是一个JSON对象: const json = { "catalog:aardvark": { "severity": "minor" }, "catalog:baboon": { "severity": "minor", "testDependency": "dashboard:echidna" }, "c

这感觉像是一个基本的问题,但我对编码是新手,我就是找不到答案。(我已经在谷歌上搜索过很多次了。)

下面是一个JSON对象:

const json = {
    "catalog:aardvark": {
        "severity": "minor"
    },
    "catalog:baboon": {
        "severity": "minor",
        "testDependency": "dashboard:echidna"
    },
    "catalog:capybara": {
        "severity": "minor",
        "testDependency": "dashboard:ferret"
    },
    "dashboard:dingo": {
        "severity": "minor"
    },
    "dashboard:echidna": {
        "severity": "minor"
    },
    "dashboard:ferret": {
        "severity": "minor"
    }
}
使用vanilla JavaScript或ES6或节点模块,我需要返回键
“catalog:capybara”
,但我可以使用的唯一输入是键
“testDependency”
和/或值
“dashboard:ferret”
。就这些目的而言,其余的都是未知的

我做了很多事都没有用,我不会告诉你我失败的细节。同样,这看起来应该很简单。我非常感谢你的帮助


PS:不要被许多键和值包含字符这一事实所迷惑:

您可以获取对象的键并找到嵌套对象,然后返回键

函数查找(对象、键、值){
返回Object.keys(Object.find)(k=>Object[k][key]==value);
}
var object={“catalog:aardvark”:{severity:“minor”},“catalog:baboon”:{severity:“minor”},“testDependency:“dashboard:echidna”},“catalog:capybara”{severity:“minor”},“testDependency:“dashboard:ferret”},“dashboard:dingo”{severity:“minor”},“dashboard:echidna”{severity:“minor”};

log(find(对象,'testDependency','dashboard:ferret')您可以将JSON映射到一个键/值数组,如下所示:

const array = Object.keys(json).map((key) => {
    return  {key: key, value: json[key] };
});
然后,您可以筛选键/值:

const filtered = array.filter((obj) => {
    return obj.key === "catalog:capybara" || obj.value.testDependency === "dashboard:ferret";
});

这也不是(
constjson={…}
)-这是一个对象。这是一个不清楚的问题。如果您需要返回一个特定的密钥,并且您已经知道它,那么为什么需要返回它呢?此外,如果您只能输入“testDependency”,因为有几个键作为子键具有testDependency,因此没有唯一的键来标识您正在搜索的键。请为嵌套搜索和所需结果添加一些用例。OMG,非常简单,请继续。我觉得自己是个真正的新手,无法完成。非常感谢。如果它解决了您的问题,请不要忘记将其标记为答案;)