首页 > 解决方案 > 过滤 JSON - Angular 8

问题描述

{"data": [
  {
    "client": {
      "name": "TEST NAME",
      "client_id": "id_client_boU6cpFX55vkLCXt52TSVB"
    },
    "Pay_list": [
      {
        "pay_id": "id_pay_aAW6mEvsCpBVT4aASDERTY"
      },
      {
        "pay_id": "id_pay_aAW6mEvsCpBVT4aTDgVCSD"
      }
    ],
    "company": {
      "name": "ABCD",
      "ID": "1234"
    }
  },
  {
    "client": {
      "name": "TEST NAME",
      "client_id": "id_client_boU6cpFX55vkLCXt52TSVB"
    },
    "Pay_list": [
      {
        "pay_id": "id_pay_aAW6mEvsCpBVT4aASQQQW"
      },
      {
        "pay_id": "id_pay_aAW6mEvsCpBVT4aTDDFGE"
      },
      {
        "pay_id": "id_pay_aAW6mEvsCpBVT4aTDgVDFE"
      }
    ],
    "company": {
      "name": "fBfD",
      "ID": "5214"
    }
  },
]
}

JSON

我需要过滤这个 JSON 并获取公司名称。

this.Detail = result.data.filter(item => item.client.client_id== this.client_client_id && item.Pay_list.pay_id == this.PayId);

我已经尝试了上面的代码,但它引发了错误,因为 Pay_list 是一个数组。

如何过滤上述 JSON?请帮助我。

标签: javascriptangulartypescript

解决方案


你可以试试这个片段。附上Stackblitz Demo供您参考:

过滤器可能需要的变量:

const clientId = "id_client_boU6cpFX55vkLCXt52TSVB";
const payId = "id_pay_aAW6mEvsCpBVT4aASDERTY";

代码

const result = response
  .data
  .filter(({ client: { client_id }, Pay_list }) => client_id === clientId && Pay_list.some(pay => pay.pay_id === payId))[0]
  .company
  .name;

结果:

ABCD

推荐阅读