我从JSON数组中获取数据时遇到了一些麻烦。我使用node + async + request(和express ofc)。
部分代码:
function(data, callback){
var URL = 'https://'+ server + '.api.pvp.net/api/lol/' + serw + '/v1.3/stats/by-summoner/' + data.id + '/summary?season=SEASON2016&api_key=' + api;
request(URL, function(err, response, body){
if(!err & response.statusCode == 200){
var json = JSON.parse(body);
var assists = json['playerStatSummaries'][0]['aggregatedStats'].totalAssists;
主要问题是[0]从数组中返回第一个对象。
{
"playerStatSummaries": [
{
"playerStatSummaryType": "CAP5x5",
"aggregatedStats": {
"totalNeutralMinionsKilled": 2042,
"totalMinionKills": 4317,
"totalChampionKills": 350,
"totalAssists": 417,
"totalTurretsKilled": 36
},
"modifyDate": 1453276061000,
"wins": 20
},
{
"playerStatSummaryType": "CoopVsAI",
"aggregatedStats": {
"totalNeutralMinionsKilled": 446,
"totalMinionKills": 6100,
"totalChampionKills": 1092,
"totalAssists": 761,
"totalTurretsKilled": 116
},
"modifyDate": 1453276061000,
"wins": 80
},
有时阵列有点不同,如果玩家没有玩任何" CAP5x5"游戏中,COOPvsAI是[0]对象。
如何通过它的playerStatSummaryType而不是数组中的对象编号来获取数据? 或者如何在无法找到" CAP5x5"模式?感谢。
答案 0 :(得分:1)
function filterOnPlayerStatSummary(myObject, filter)
{
var result = [];
for(var i = 0; i < myObject.length; i++)
{
if (myObject[i].playerStatSummary == filter)
{
result.push(myObject[i]);
}
}
return result;
}
答案 1 :(得分:0)
如果您使用的是ES2015,则以下操作
let json = JSON.parse(body);
let assists = json
.playerStatSummaries
.filter((a) => a.playerStatSummaryType =='CAP5x5')
.map((a) => a.aggregatedStats.totalAssists)
.reduce((a,b)=>a+b)