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;i console.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;i 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,“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