我有一个要搜索的键值。每个对象对于数组中的每个对象都有一个key
键。我想将要搜索的术语与key
的值匹配,并使用键name
返回同级的值。
这是一个示例对象:
{
"test1": {
"functions": {
"function1": {
"inputs": [
{
"key": "key1",
"name": "name1"
},
{
"key": "key2",
"name": "name3"
},
{
"key": "key3",
"name": "name3"
}
]
},
"function2": {
"inputs": [
{
"key": "key4",
"name": "name4"
},
{
"key": "key5",
"name": "name5"
},
{
"key": "key6",
"name": "name6"
}
]
}
}
}
}
假设我要查找name
为key
的输入的key4
。我将如何在javascript中实现这一目标?
答案 0 :(得分:2)
这是您想要的吗?
var yourObject = {
"inputs": [
{
"key": "callset_name",
"name": "Callset Name",
"type": "STRING",
"required": false,
"fromPrevious": false,
"internalOnly": false
},
{
"key": "reference_genome",
"name": "Reference Genome",
"description": "A reference genome.",
"type": "DATASET",
"required": true,
"fromPrevious": false,
"internalOnly": false,
"constraints": {
"dataset": {
"types": [
"REFERENCE_GENOME"
],
"components": [
"bwa_reference_genome"
]
}
}
},
{
"key": "bam",
"name": "BAM",
"type": "FILE",
"required": true,
"fromPrevious": true,
"internalOnly": false,
"constraints": {
"file": {
"types": [
"BAM"
],
"indexedBy": "bai"
}
}
},
{
"key": "bai",
"name": "BAM Index",
"type": "FILE",
"required": true,
"fromPrevious": true,
"internalOnly": false,
"constraints": {
"file": {
"types": [
"BAM_INDEX"
]
}
}
},
{
"key": "dbsnp_vcf",
"name": "dbSNP VCF",
"description": "Single Nucleotide Polymorphism Database",
"type": "FILE",
"required": false,
"fromPrevious": false,
"internalOnly": false,
"constraints": {
"file": {
"types": [
"VCF"
],
"indexedBy": "dbsnp_vcf_index"
}
}
},
{
"key": "dbsnp_vcf_index",
"name": "dbSNP VCF Index",
"description": "Single Nucleotide Polymorphism Database Index",
"type": "FILE",
"required": false,
"fromPrevious": false,
"internalOnly": false,
"constraints": {
"file": {
"types": [
"VCF_INDEX",
"VCF_IDX"
]
}
}
}
]
};
function getData(key, outputKey) {
const output = yourObject.inputs.find(data => data.key === key);
if (output && output.hasOwnProperty(outputKey)) {
return output[outputKey];
}
return;
}
console.log(getData('reference_genome', 'name'));