You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

英雄联盟小应用开发:如何通过英雄ID获取英雄名称

解决英雄联盟英雄ID转名称的问题

首先,既然你已经手握包含英雄ID与对应名称的JSON文件,最直接高效的方案就是把这份JSON数据转换成键值对映射结构(比如JS里的Object、Python里的dict),后续通过ID查名称就是瞬间完成的O(1)操作,完全适配你获取Top3常用英雄的场景。

我给你整理了几种主流开发语言的实现示例,你可以对应自己的技术栈参考:

JavaScript/TypeScript 实现示例

假设你的JSON文件结构大概是这样(部分片段):

[
  {"id": 1, "name": "安妮"},
  {"id": 2, "name": "奥拉夫"},
  {"id": 3, "name": "加里奥"}
]
  1. 先读取并解析JSON文件:
// Node.js环境下读取本地文件
const fs = require('fs');
const heroData = JSON.parse(fs.readFileSync('./heroes.json', 'utf8'));

// 浏览器环境下通过fetch加载
// const heroData = await fetch('./heroes.json').then(res => res.json());
  1. 将数组转换为ID为键的映射对象:
const heroIdMap = {};
heroData.forEach(hero => {
  heroIdMap[hero.id] = hero.name;
});
  1. 直接通过ID获取名称:
// 假设从API拿到的Top3英雄ID数组是 [1,3,2]
const topHeroIds = [1,3,2];
const topHeroNames = topHeroIds.map(id => heroIdMap[id] || '未知英雄');
console.log(topHeroNames); // 输出 ["安妮", "加里奥", "奥拉夫"]

Python 实现示例

基于同样的JSON结构:

  1. 读取解析JSON文件:
import json

with open('./heroes.json', 'r', encoding='utf-8') as f:
    hero_data = json.load(f)
  1. 构建ID到名称的字典映射:
hero_id_map = {hero['id']: hero['name'] for hero in hero_data}
  1. 查询英雄名称:
top_hero_ids = [1,3,2]
top_hero_names = [hero_id_map.get(id, '未知英雄') for id in top_hero_ids]
print(top_hero_names) # 输出 ['安妮', '加里奥', '奥拉夫']

额外实用提示

  • 注意ID的类型匹配:确认LOL API返回的ID是数值型还是字符串型,和你JSON文件里的ID类型保持一致,避免出现'1'1匹配不上的问题。
  • 定期更新JSON文件:LOL会不定期新增英雄或调整信息,建议每隔一段时间同步一下官方的英雄数据,避免出现ID对应失效的情况。
  • 备选方案:如果不想维护本地JSON,也可以调用LOL官方的静态数据API(比如/lol/static-data/v3/heroes)实时获取映射关系,但要注意API的调用频率限制。

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

火山引擎 最新活动