根据键在对象数组内搜索值并返回同级的值

时间:2020-08-17 12:54:43

标签: javascript arrays object

我有一个要搜索的键值。每个对象对于数组中的每个对象都有一个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"
          }
        ]
      }
    }
  }
}

假设我要查找namekey的输入的key4。我将如何在javascript中实现这一目标?

1 个答案:

答案 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'));

相关问题