代码之家  ›  专栏  ›  技术社区  ›  user944513

如何从响应(带有数组的对象)获取数据数组?

  •  0
  • user944513  · 技术社区  · 8 年前

    我从这样的服务中得到了回应

    var obj = {
      "master": [
          {
            "id": 1,
            "abc": [
              {
                "id": 1,
                "categoryId": 1,
                "displayName": "Prepaid",
                "value": "PREPAID"
              },
              {
                "id": 2,
                "categoryId": 1,
                "displayName": "Prepaid CYN",
                "value": "PREPAID_CYN"
              }
            ],
            "name": "Product Type",
            "value": "productType"
          },
          {
            "id": 2,
            "abc": [
              {
                "id": 6,
                "categoryId": 2,
                "displayName": "Mobile",
                "value": "Mobile"
              }
            ],
            "name": "Criteria",
            "value": "criteria"
          },
          {
            "id": 3,
            "abc": [
              {
                "id": 7,
                "categoryId": 3,
                "displayName": "Card",
                "value": "Aasssar"
              },
              {
                "id": 8,
                "categoryId": 3,
                "displayName": "Driving",
                "value": "li"
              }
            ],
            "name": "Proof",
            "value": "Proof"
          }     
        ]
    }
    
    let proofArr=[],
    productType=[];
    
    for(var i=0;obj.master.length;i++){
      console.log(obj)
      if(obj[i].master[i].value ==='productType'){
    productType = obj[i].master[i].abc;
      }
    }
    
    for(var i=0;obj.master.length;i++){
      if(obj[i].master[i].value ==='product type'){
    proofArr = obj[i].master[i].abc;
      }
    }
    
    console.log(productType)
    console.log(proofArr)
    

    预期产量

    产品类型=

    [
              {
                "id": 1,
                "categoryId": 1,
                "displayName": "Prepaid",
                "value": "PREPAID"
              },
              {
                "id": 2,
                "categoryId": 1,
                "displayName": "Prepaid CYN",
                "value": "PREPAID_CYN"
              }
            ]
    

    [
              {
                "id": 7,
                "categoryId": 3,
                "displayName": "Card",
                "value": "Aasssar"
              },
              {
                "id": 8,
                "categoryId": 3,
                "displayName": "Driving",
                "value": "li"
              }
            ]
    

    如何从响应中获取数据?

    3 回复  |  直到 8 年前
        1
  •  3
  •   Eddie    8 年前

    另一个选择是 find() 搜索第一个匹配项。

    var obj = {"master":[{"id":1,"abc":[{"id":1,"categoryId":1,"displayName":"Prepaid","value":"PREPAID"},{"id":2,"categoryId":1,"displayName":"Prepaid CYN","value":"PREPAID_CYN"}],"name":"Product Type","value":"productType"},{"id":2,"abc":[{"id":6,"categoryId":2,"displayName":"Mobile","value":"Mobile"}],"name":"Criteria","value":"criteria"},{"id":3,"abc":[{"id":7,"categoryId":3,"displayName":"Card","value":"Aasssar"},{"id":8,"categoryId":3,"displayName":"Driving","value":"li"}],"name":"Proof","value":"Proof"}]}
    
    var productType = (obj.master.find(o => o.value === "productType") || {abc: []}).abc;
    var proofArr = (obj.master.find(o => o.value === "Proof") || {abc: []}).abc;
    
    console.log( productType );
    console.log( proofArr );
        2
  •  2
  •   Kirill Matrosov YWILLS    8 年前

    • 坏状况(完全没有计数器i)
    • 正在尝试访问obj[i].master对象主控

    var obj = {
      "master": [{
          "id": 1,
          "abc": [{
              "id": 1,
              "categoryId": 1,
              "displayName": "Prepaid",
              "value": "PREPAID"
            },
            {
              "id": 2,
              "categoryId": 1,
              "displayName": "Prepaid CYN",
              "value": "PREPAID_CYN"
            }
          ],
          "name": "Product Type",
          "value": "productType"
        },
        {
          "id": 2,
          "abc": [{
            "id": 6,
            "categoryId": 2,
            "displayName": "Mobile",
            "value": "Mobile"
          }],
          "name": "Criteria",
          "value": "criteria"
        },
        {
          "id": 3,
          "abc": [{
              "id": 7,
              "categoryId": 3,
              "displayName": "Card",
              "value": "Aasssar"
            },
            {
              "id": 8,
              "categoryId": 3,
              "displayName": "Driving",
              "value": "li"
            }
          ],
          "name": "Proof",
          "value": "Proof"
        }
      ]
    }
    
    let proofArr = [],
      productType = [];
    
    for (var i = 0; i < obj.master.length; i++) {
      if (obj.master[i].value === 'productType') {
        productType = obj.master[i].abc;
      }
      if (obj.master[i].value === 'Proof') {
        proofArr = obj.master[i].abc;
      }
    }
    
    console.log(productType)
    console.log(proofArr)
        3
  •  0
  •   Nina Scholz    8 年前

    你可以通过 value

    function getByType(type) {
        return obj.master.reduce(
            (r, { value, abc }) => r.concat(value === type ? abc : []),
            []
        );
    }
    
    var obj = { master: [{ id: 1, abc: [{ id: 1, categoryId: 1, displayName: "Prepaid", value: "PREPAID" }, { id: 2, categoryId: 1, displayName: "Prepaid CYN", value: "PREPAID_CYN" }], name: "Product Type", value: "productType" }, { id: 2, abc: [{ id: 6, categoryId: 2, displayName: "Mobile", value: "Mobile" }], name: "Criteria", value: "criteria" }, { id: 3, abc: [{ id: 7, categoryId: 3, displayName: "Card", value: "Aasssar" }, { id: 8, categoryId: 3, displayName: "Driving", value: "li" }], name: "Proof", value: "Proof" }] };
    
    console.log(getByType('productType'));
    console.log(getByType('Proof'));
    .as-console-wrapper { max-height: 100% !important; top: 0; }