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

Javascript 如何从响应(带有数组的对象)获取数据数组?,javascript,jquery,Javascript,Jquery,我从这样的服务中得到了回应 var obj = { "master": [ { "id": 1, "abc": [ { "id": 1, "categoryId": 1, "displayName": "Prepaid", "value": "PREPAID" }, {

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

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)
我想从响应中转换或获取数组

预期产出

productType=

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

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

如何从响应中获取数据?

代码中的问题:

  • 恶劣条件(完全缺少计数器i)
  • 正在尝试访问obj[i].master而不是obj.master
  • 加载验证数组时出现不良情况
var obj={
“主人”:[{
“id”:1,
“abc”:[{
“id”:1,
“类别”1,
“显示名称”:“预付费”,
“价值”:“预付”
},
{
“id”:2,
“类别”1,
“displayName”:“预付费CYN”,
“价值”:“预付费用”
}
],
“名称”:“产品类型”,
“值”:“productType”
},
{
“id”:2,
“abc”:[{
“id”:6,
“类别”2,
“displayName”:“Mobile”,
“值”:“移动”
}],
“名称”:“标准”,
“值”:“标准”
},
{
“id”:3,
“abc”:[{
“id”:7,
“类别”:3,
“显示名称”:“卡片”,
“值”:“aassar”
},
{
“id”:8,
“类别”:3,
“显示名称”:“驾驶”,
“值”:“li”
}
],
“名称”:“证明”,
“值”:“证明”
}
]
}
设proofArr=[],
productType=[];
对于(变量i=0;iconsole.log(proofArr)
代码中的问题:

  • 恶劣条件(完全缺少计数器i)
  • 正在尝试访问obj[i].master而不是obj.master
  • 加载验证数组时出现不良情况
var obj={
“主人”:[{
“id”:1,
“abc”:[{
“id”:1,
“类别”1,
“显示名称”:“预付费”,
“价值”:“预付”
},
{
“id”:2,
“类别”1,
“displayName”:“预付费CYN”,
“价值”:“预付费用”
}
],
“名称”:“产品类型”,
“值”:“productType”
},
{
“id”:2,
“abc”:[{
“id”:6,
“类别”2,
“displayName”:“Mobile”,
“值”:“移动”
}],
“名称”:“标准”,
“值”:“标准”
},
{
“id”:3,
“abc”:[{
“id”:7,
“类别”:3,
“显示名称”:“卡片”,
“值”:“aassar”
},
{
“id”:8,
“类别”:3,
“显示名称”:“驾驶”,
“值”:“li”
}
],
“名称”:“证明”,
“值”:“证明”
}
]
}
设proofArr=[],
productType=[];
对于(变量i=0;iconsole.log(proofArr)
另一个选项是搜索第一个匹配项

var obj={“master”:[{“id”:1,“abc”:[{“id”:1,“categoryId”:1,“displayName”:“预付费”、“价值”:“预付费CYN”、“价值”:“预付费CYN”}],“名称”:“产品类型”、“价值”:“产品类型”},{“id”:2,“abc”:[{“id”:6,“categoryId”:2,“displayName”:“手机”、“价值”:“手机”}],“名称”:“标准”、“价值”:“标准”}{“id”:3,“abc”:[{“id”:7,“categoryId”:3,“displayName”:“Card”,“value”:“AASSAR”},{“id”:8,“categoryId”:3,“displayName”:“Driving”,“value”:“li”}],“name”:“Proof”,“value”:“Proof”}]}
var productType=(obj.master.find(o=>o.value===“productType”)|{abc:[]}).abc;
var Proof arr=(obj.master.find(o=>o.value===“Proof”)|{abc:[]}).abc;
console.log(productType);

console.log(proofArr);
另一个选项是搜索第一个匹配项

var obj={“master”:[{“id”:1,“abc”:[{“id”:1,“categoryId”:1,“displayName”:“预付费”、“价值”:“预付费CYN”、“价值”:“预付费CYN”}],“名称”:“产品类型”、“价值”:“产品类型”},{“id”:2,“abc”:[{“id”:6,“categoryId”:2,“displayName”:“手机”、“价值”:“手机”}],“名称”:“标准”、“价值”:“标准”},{id:3,“abc”:[{“id”:7,“类别id”:3,“显示名称”:“卡片”,“价值”:“AASSAR”},{“id”:8,“类别id”:3,“显示名称”:“驾驶”,“价值”:“li”}],“名称”:“证明”,“价值”:“证明”}]
var productType=(obj.master.find(o=>o.value===“productType”)|{abc:[]}).abc;
var Proof arr=(obj.master.find(o=>o.value===“Proof”)|{abc:[]}).abc;
console.log(productType);

console.log(proofArr);
您可以按
值过滤所需的数组,并将找到的所有数组减少为单个数组

函数getByType(类型){ 返回obj.master.reduce( (r,{value,abc})=>r.concat(value==type?abc:[]), [] ); } var obj={master:[{id:1,abc:[{id:1,categoryId:1,displayName:“预付费”,value:“预付费”},{id:2,categoryId:1,displayName:“预付费的CYN”,value:“预付费的”},name:“产品类型”,value:“产品类型”},{id:2,abc:[{id:6,categoryId:2,displayName:“移动设备”,value:“标准”,value:“标准”},{id:3,abc:[{id:7,categoryId:3,displayName:“Card”,value:“aassar”},{id:8,categoryId:3,displayName:“Driving”,value:“li”}],name:“Proof”,value:“Proof”}]; log(getByType('productType'); console.log(getByType('Proof');

.as console wrapper{max height:100%!important;top:0;}
您可以按
值筛选所需的数组,并将找到的所有数组缩减为单个数组

函数getByType(类型){ 返回obj