如何从JavaScript对象提取特定数据?Fortnite-API Discord机器人开发
访问Fortnite API返回数据中的Solo/Duo分组信息
别担心,处理这种嵌套的API返回对象其实很简单——完全不用把它转成字符串,直接通过对象的属性链就能精准获取你要的数据。我来给你一步步拆解:
第一步:先明确API返回的结构逻辑
假设你用axios或node-fetch请求API后拿到的响应数据是userData,首先得理清这个对象的层级。通常Fortnite API的对战数据会嵌套在类似stats或br的字段下,里面直接包含solo、duo、squad这些分组对象。
举个贴近实际的结构示例:
{ data: { stats: { br: { solo: { wins: 123, kills: 4567, matchesPlayed: 890, // 其他solo相关统计项 }, duo: { wins: 78, kills: 2345, matchesPlayed: 567, // 其他duo相关统计项 }, squad: { // ... 同理的 squad 数据 } } } } }
第二步:获取整个分组的完整数据
如果你想拿到solo分组下的所有信息,直接顺着属性链访问就行:
const soloStats = userData.data.stats.br.solo; console.log(soloStats); // 这会输出solo分组下的所有键值对
同理,duo和squad的完整数据也可以用同样方式提取:
const duoStats = userData.data.stats.br.duo; const squadStats = userData.data.stats.br.squad;
第三步:单独提取分组下的特定字段
如果只想拿solo的获胜数这类单个数据,继续往下钻属性即可:
const soloWins = userData.data.stats.br.solo.wins; console.log(`Solo模式获胜数:${soloWins}`);
要是担心某个层级的字段不存在(比如用户从未玩过solo模式),可以用可选链操作符?.避免报错,再配合空值合并运算符??给个默认值:
// 若solo字段不存在,soloWins会取默认值0,而不是抛出错误 const soloWins = userData.data?.stats?.br?.solo?.wins ?? 0;
小技巧:批量处理所有分组数据
如果你想一次性处理solo、duo、squad所有模式的数据,可以用Object.entries()遍历:
const brStats = userData.data.stats.br; for (const [mode, stats] of Object.entries(brStats)) { console.log(`=== ${mode.toUpperCase()} 模式数据 ===`); console.log(`获胜数:${stats.wins}`); console.log(`总击杀:${stats.kills}`); console.log(`总场次:${stats.matchesPlayed}\n`); }
这样就能高效处理所有模式的数据,不用重复写冗余代码啦。
内容的提问来源于stack exchange,提问作者Mike Sassatelli
相关产品推荐
相关产品推荐

