如何根据plID值获取Lua数组racers的对应索引?
解决Lua数组反向索引获取外层索引的问题
嘿,我来帮你搞定这个反向索引的问题!你的需求是通过plID=21拿到racers数组对应的外层索引6,但当前代码没做到,主要是两个关键问题:
原代码的问题点
- 遍历范围不全:你写的
for i = 1,5 do只遍历了数组前5个位置,但目标条目在racers[6],根本没被处理到; - 映射关系搞反:
index[v]=k是把子表的值(比如21)映射到子表的键名(比如"plID"),这和你要的「plID值 → 外层数组索引」完全相反。
正确的解决方案
直接构建plID到外层索引的映射表就好,用pairs遍历整个racers数组(不管索引是否连续),代码如下:
-- 你的原始数组定义 local racers = {} racers[6] = {plCP = 4, plID= 21} -- 构建plID到外层索引的反向映射 local plid_to_index = {} for outer_idx, racer_info in pairs(racers) do -- 确保子表存在plID字段再添加映射,避免报错 if racer_info.plID then plid_to_index[racer_info.plID] = outer_idx end end -- 测试获取目标索引 local target_plid = 21 local result = plid_to_index[target_plid] print(result) -- 输出:6
代码解释
- 用
pairs(racers)遍历数组的所有键值对,不管你的数组索引是连续的还是像6这样离散的,都能覆盖到; - 直接把每个子表的
plID值作为键,对应的外层索引outer_idx作为值存入反向映射表; - 后续查询时,直接用
plID值就能快速拿到对应的外层索引,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Chase
相关产品推荐
相关产品推荐

