Hugo中如何通过独立对象的值调用JSON数组特定数据
在Hugo中通过球队ID关联获取球队信息的实现方法
要实现类似JS里通过ID直接索引球队信息的效果,核心是先把teams数组转成以球队ID为键的字典映射,之后遍历赛程时直接通过ID取值即可,具体步骤如下:
- 构建球队ID映射字典
先从数据文件中读取teams数组,循环遍历生成一个键为球队ID、值为完整球队信息的字典。这样后续就能直接用ID快速查找,不用每次都遍历整个teams数组。
示例代码(假设你的数据文件是data/sports.json):
{{ $data := .Site.Data.sports }} {{ $teamMap := dict }} {{ range $team := $data.teams }} {{ $teamMap = merge $teamMap (dict $team.id $team) }} {{ end }}
- 遍历赛程并关联球队信息
遍历schedule.week1的每场比赛时,用比赛的home字段(球队ID),通过index函数从之前构建的$teamMap中取出对应球队的信息,用法和JS里的方括号索引完全对应。
示例代码:
{{ range $game := $data.schedule.week1 }} <div class="game-item"> <!-- 获取主场球队名称 --> <p>主场:{{ (index $teamMap $game.home).name }}</p> <!-- 可以直接取球队其他属性,比如logo、所在赛区 --> <img src="{{ (index $teamMap $game.home).logo }}" alt="{{ (index $teamMap $game.home).name }}"> <p>赛区:{{ (index $teamMap $game.home).division }}</p> </div> {{ end }}
- 容错处理(可选)
如果存在球队ID无效的情况,可以用default函数避免模板报错:
{{ $homeTeam := index $teamMap $game.home | default (dict "name" "未知球队") }} <p>主场:{{ $homeTeam.name }}</p>
内容的提问来源于stack exchange,提问作者Gabriel Toy
相关产品推荐
相关产品推荐

