过滤 json 个元素,其值存储到另一个对象中

Filter json element with values stored into another object

我有以下 JSON:

var json = [
    {
        "Key1": some text...,
        "Key2": some text...,
        "Key3": [
            {
                "Key": "Key 1",
                "Value": "1",
            },
            {
                "Key": "Key 2",
                "Value": "1",
            }
        ]
    },
    {
        "Key1": some text...,
        "Key2": some text...,
        "Key3": [
            {
                "Key": "Key 1",
                "Value": "2",
            },
            {
                "Key": "Key 2",
                "Value": "2",
            }
        ]
    },
    {
        "Key1": some text...,
        "Key2": some text...,
        "Key3": [
            {
                "Key": "Key 1",
                "Value": "3",
            },
            {
                "Key": "Key 2",
                "Value": "3",
            }
        ]
    },
]

然后我有下面的var

var items = [1, 3];

我需要做的是过滤 json 以仅将 Key 2 值存在的项目显示到项目对象中。我正在尝试执行以下操作:

var res = json.filter(item => items.includes(item.Key3.find(x => x.Key === "Key 2").Value));

以上代码返回空结果 ([])。还有另一种方法来处理这个吗?我做错了什么?

var json = [
   {
      "Key1":"some text...",
      "Key2":"some text...",
      "Key3":[
         {
            "Key":"Key 1",
            "Value":"1"
         },
         {
            "Key":"Key 2",
            "Value":"1"
         }
      ]
   },
   {
      "Key1":"some text...",
      "Key2":"some text...",
      "Key3":[
         {
            "Key":"Key 1",
            "Value":"2"
         },
         {
            "Key":"Key 2",
            "Value":"2"
         }
      ]
   },
   {
      "Key1":"some text...",
      "Key2":"some text...",
      "Key3":[
         {
            "Key":"Key 1",
            "Value":"3"
         },
         {
            "Key":"Key 2",
            "Value":"3"
         }
      ]
   }
];

var items = [1, 3];
var res = json.filter(item => items.includes(item.Key3.find(x => x.Key === "Key 2").Value));
console.log(res);

includes() 执行严格的相等性检查。因此,如果 items 包含数字但 item.Key3 包含字符串,则不匹配。

您应该将 Value 中的字符串解析为整数。

var res = json.filter(item => items.includes(parseInt(item.Key3.find(x => x.Key === "Key 2").Value)));