我有这样的json数据:
{
"s:Envelope": {
"s:Body": {
"ExecuteSnapshotRequestsResponse": {
"ExecuteSnapshotRequestsResult": {
"a:SnapshotResponseItemBase": [
{
"a:AdditionalDetails": {},
"a:Error": {},
"a:Tag": {
"_text": "0~##~vod~##~PI,DY,MV"
},
"a:Instrument": {
"_text": "vod"
},
"a:InstrumentDisplay": {},
"a:Currency": {
"_text": "£ "
},
"a:DataTypeValues": {
"a:DataTypeResponseValueBase": [
{
"a:DataType": {
"_text": "PI"
},
"a:DataTypeDisplayName": {
"_text": "PRICE INDEX"
},
"a:Value": {
"_text": "1238.4"
}
},
{
"a:DataType": {
"_text": "DY"
},
"a:DataTypeDisplayName": {
"_text": "DIVIDEND YIELD"
},
"a:Value": {
"_text": "9.25"
}
},
{
"a:DataType": {
"_text": "MV"
},
"a:DataTypeDisplayName": {
"_text": "MARKET VALUE"
},
"a:Value": {
"_text": "38823.49"
}
}
]
},
"a:Date": {
"_text": "2019-04-17T00:00:00"
}
},
{
"a:AdditionalDetails": {},
"a:Error": {},
"a:Tag": {
"_text": "0~##~@AAPL~##~PI,DY,MV"
},
"a:Instrument": {
"_text": "@AAPL"
},
"a:InstrumentDisplay": {},
"a:Currency": {
"_text": "U$"
},
"a:DataTypeValues": {
"a:DataTypeResponseValueBase": [
{
"a:DataType": {
"_text": "PI"
},
"a:DataTypeDisplayName": {
"_text": "PRICE INDEX"
},
"a:Value": {
"_text": "39566.2"
}
},
{
"a:DataType": {
"_text": "DY"
},
"a:DataTypeDisplayName": {
"_text": "DIVIDEND YIELD"
},
"a:Value": {
"_text": "1.44"
}
},
{
"a:DataType": {
"_text": "MV"
},
"a:DataTypeDisplayName": {
"_text": "MARKET VALUE"
},
"a:Value": {
"_text": "957814.5"
}
}
]
},
"a:Date": {
"_text": "2019-04-17T00:00:00"
}
}
]
}
}
}
}
}
我想要这样的输出:
[['vod','1238.4','9.25','38823.49'],['@AAPL','39566.2','1.44','957814.5']]
我尝试了这个,但是我只在单个数组中得到输出:
let arr = [];
totalRows.forEach(v => {
arr.push(v["a:Instrument"]["_text"]);
v["a:DataTypeValues"]["a:DataTypeResponseValueBase"].map((e, i) => {
arr.push(e["a:Value"]["_text"]);
});
});
但是我想为每个a:SnapshotResponseItemBase
使用多个数组,并分别获得a:Instrument
和a:Value
更新:
我已经修复了这个问题,但是可以优化吗?
let arr = [];
for (var i = 0; i < totalRowsCount; i++) {
arr.push(totalRows[i]["a:Instrument"]["_text"]);
for (var j = 0; j < totalRows[i]["a:DataTypeValues"]["a:DataTypeResponseValueBase"].length; j++) {
arr.push(totalRows[i]["a:DataTypeValues"]["a:DataTypeResponseValueBase"][j]["a:Value"]["_text"]);
}
}
答案 0 :(得分:2)
const arr = totalRows
.map(el => [
el['a:Instrument']._text,
...el['a:DataTypeValues']['a:DataTypeResponseValueBase']
.map(e => e['a:Value']._text)
]);
答案 1 :(得分:2)
试试这个伴侣
arr = totalRows.map(element => {
let one = element["a:Instrument"]["_text"];
let two = element["a:DataTypeValues"]["a:DataTypeResponseValueBase"].map(subArrayElement => {
return subArrayElement["a:Value"]["_text"];
})
return [...one, ...two];
})
console.log(arr);