首页 > 解决方案 > 根据另一个对象的值获取父对象的值

问题描述

从 json 中,我可以根据另一个对象的键值获取值吗?我将如何做到这一点?使用数组过滤器或 for 循环?

我试过使用数组过滤器,但它只返回整个 json 对象

这是我的示例 JSON:

[
  {
    "type":1,
    "key": "123abc",
    "data": {
        "access": "123456"
        "data": {
          "dataValue": [
            {
              "@attr": {
                 "@key": "Fire"
              },
              "@value": "Flame"
            },
            {
              "@attr": {
                 "@key": "Water"
              },
              "@value": "Liquid"
            },
            {
              "@attr": {
                 "@key": "Earth"
              },
              "@value": "Stone"
            }
          ]
        }
     }
  }
]

我想要的是通过从“@key”中搜索“Water”从@value 中获取“Liquid”值

输出:液体

感谢那些愿意提供帮助的人。

标签: javascriptarraysjson

解决方案


您可以从解析的对象中使用过滤器,如下所示:

let obj = [{
  "type": 1,
  "key": "123abc",
  "data": {
    "access": "123456",
    "data": {
      "dataValue": [{
          "@attr": {
            "@key": "Fire"
          },
          "@value": "Flame"
        },
        {
          "@attr": {
            "@key": "Water"
          },
          "@value": "Liquid"
        },
        {
          "@attr": {
            "@key": "Earth"
          },
          "@value": "Stone"
        }
      ]
    }
  }
}];

console.log(obj[0].data.data.dataValue.filter(a => a["@attr"]["@key"] == "Water")[0]["@value"]);


推荐阅读