You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对足球赛事API的JSON响应数据分组并建立关联

实现思路:按联赛分组赛事并建立关联

核心逻辑:基于联赛唯一标识构建映射关系

通过联赛ID(或其他全局唯一标识)作为分组键,将同联赛的赛事聚合到对应联赛条目下,同时保留联赛与赛事的关联能力。


具体步骤

  1. 解析原始数据
    先将API返回的JSON字符串解析为可操作的对象,提取顶层的fixtures赛事数组。

  2. 初始化分组映射容器
    使用Map(推荐,键支持任意类型)或普通对象,存储联赛ID到「联赛信息+赛事列表」的映射:

    // 用Map存储分组关系,键为联赛ID,值为包含联赛数据和赛事数组的对象
    const leagueMap = new Map();
    
  3. 遍历赛事填充映射
    循环处理每个赛事,提取其关联的联赛数据,完成分组与关联绑定:

    fixtures.forEach(fixture => {
      const league = fixture.leagues; // 假设单场赛事仅归属一个联赛
      const leagueId = league.id;
    
      if (!leagueMap.has(leagueId)) {
        // 首次遇到该联赛,初始化结构:联赛基础数据 + 关联方法
        leagueMap.set(leagueId, {
          ...league,
          // 封装fixtures方法,返回当前联赛的所有赛事
          fixtures: () => leagueMap.get(leagueId)._fixturesList
        });
        // 用内部属性存储原始赛事数组,避免方法与数据混淆
        leagueMap.get(leagueId)._fixturesList = [];
      }
    
      // 将当前赛事添加到对应联赛的赛事列表中
      leagueMap.get(leagueId)._fixturesList.push(fixture);
    });
    
  4. 获取分组后的联赛集合
    若需要以数组形式获取所有带赛事关联的联赛,可转换Map的值:

    const groupedLeagues = Array.from(leagueMap.values());
    
  5. 执行关联查询
    此时任意联赛对象都可通过league.fixtures()获取其下所有赛事:

    // 示例:获取第一个联赛的所有赛事
    const targetLeague = groupedLeagues[0];
    const leagueAllFixtures = targetLeague.fixtures();
    

注意事项

  • 必须确保联赛拥有全局唯一标识(如id),避免因联赛名称重复导致分组错误
  • 若赛事可能归属多个联赛,需调整逻辑为遍历赛事的leagues数组,将赛事添加到多个联赛的列表中
  • 后端语言(如Python/Java)实现逻辑一致:用字典/HashMap做映射,给联赛对象添加方法或属性关联赛事

内容的提问来源于stack exchange,提问作者Tula

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 21:15:36