Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 表数组的返回索引_Arrays_Indexing_Lua - Fatal编程技术网

Arrays 表数组的返回索引

Arrays 表数组的返回索引,arrays,indexing,lua,Arrays,Indexing,Lua,我有一个数组: racers = {} racers[6] = {plCP = 4, plID= 21} 如果我有plID=21的值,有没有办法返回参赛者的索引?(在这种情况下,我想返回6。) 我试着建立一个反向索引,但我只能在表中得到索引。以下是我现在正在尝试的: local index={} for i = 1,5 do for k,v in pairs(racers[i]) do index[v]=k end end 当我传递值21时,它返回“plID”,

我有一个数组:

racers = {}
racers[6] = {plCP = 4, plID= 21}
如果我有plID=21的值,有没有办法返回参赛者的索引?(在这种情况下,我想返回6。)

我试着建立一个反向索引,但我只能在表中得到索引。以下是我现在正在尝试的:

local index={}
for i = 1,5 do
    for k,v in pairs(racers[i]) do
       index[v]=k
    end
end
当我传递值21时,它返回“plID”,但我希望它返回6。

算出了

racers = {}
racers[1] = {plCP = 4, plID= 21}
racers[2] = {plCP = 2, plID= 4}
racers[3] = {plCP = 6, plID= 5}
racers[4] = {plCP = 222, plID= 7}
racers[5] = {plCP = 6, plID= 12}

local index={}
for i,d in pairs(racers) do
for k,v in pairs(racers[i]) do
   index[v]=i
end
end

return index[12]

这将返回5,这是我正在寻找的车手的索引。

对于列表中的每个车手,检查plID是否等于您正在寻找的id

local racers = {}
racers[1] = {plCP = 4, plID= 21}
racers[2] = {plCP = 2, plID= 4}
racers[3] = {plCP = 6, plID= 5}
racers[4] = {plCP = 222, plID= 7}
racers[5] = {plCP = 6, plID= 12}

function getRacerIndexById(racerList, id)
      for index, racer in ipairs(racerList) do
        if racer.plID == id then
          return index
        end
      end
    end

print(getRacerIndexById(racers, 12))

你的意思是
index[d.plID]=i
?@Egor我用
如果k==“plID”,那么index[v]=i end
我想他们做了同样的事情?仅仅因为你得到了一个看起来正确的数字并不意味着你的解决方案是正确的。切换赛车手2和1,然后检查索引[4]。您将获得具有plID 21的racer 2或具有plID 4的racer 1。。。想想你在内部for循环中做了什么。您还可以使用plCP值作为表索引的键@Chase-是的,这是一条通往相同结果的漫长道路:-)对于i,成对的racer(racers)进行
更快速、更有效,do index[racer.plID]=i end
。你不必在比赛桌上的每个场地都绕圈子。