Lua 如何从表中的最后一个索引迭代到第一个索引

Lua 如何从表中的最后一个索引迭代到第一个索引,lua,iterator,lua-table,Lua,Iterator,Lua Table,我有这个表,如何从最后一个索引迭代到第一个索引?它应该从lvl中断。我只是想用最好的武器展示一下这张桌子。例如,如果玩家有53级,那么我只想为他的lvl或更低级别显示武器。我需要从最好的一个(在顶部)显示这就是我想要从最后一个索引进行迭代的原因。有人能帮忙吗 编辑: 谢谢你的帮助。仍然存在一个问题,我需要稍后更改此表。它显示所有的罚款,但我需要购买所有的文字从这个(改变)名单后。所以我必须以某种方式替换这两张表。有什么简单的方法吗?我试图从这个表中删除元素,但仍然不起作用 或者可以在卢亚制作一些

我有这个表,如何从最后一个索引迭代到第一个索引?它应该从
lvl
中断。我只是想用最好的武器展示一下这张桌子。例如,如果玩家有53级,那么我只想为他的
lvl
或更低级别显示武器。我需要从最好的一个(在顶部)显示这就是我想要从最后一个索引进行迭代的原因。有人能帮忙吗

编辑: 谢谢你的帮助。仍然存在一个问题,我需要稍后更改此表。它显示所有的罚款,但我需要购买所有的文字从这个(改变)名单后。所以我必须以某种方式替换这两张表。有什么简单的方法吗?我试图从这个表中删除元素,但仍然不起作用


或者可以在卢亚制作一些地图?它必须是动态大小,所以我不能使用表,我猜。带有键值的东西是一个数字for循环,倒计时,是最好的选择:

bestSword = {
  {name = 'www' , lvl = 35, atk = 38, npcPrice = 15000 , buyPrice = 0},
  {name = 'bbb' , lvl = 40, atk = 40, npcPrice = 20000 , buyPrice = 0},
  {name = 'eee' , lvl = 50, atk = 42, npcPrice = 25000 , buyPrice = 0},
  {name = 'sss' , lvl = 55, atk = 43, npcPrice = 30000 , buyPrice = 0},
  {name = 'aaa' , lvl = 60, atk = 44, npcPrice = 30000 , buyPrice = 0},
  {name = 'qwe' , lvl = 70, atk = 46, npcPrice = 35000 , buyPrice = 0},
  {name = 'asd' , lvl = 82, atk = 48, npcPrice = 60000 , buyPrice = 0}
}

假设表不一定按级别顺序排序(与示例不同),我们需要做两件事:

  • 找到等级范围内的剑
  • 按降序排列
现在临时表中的第一把是“最好的”剑

像这样:

local t = {2,4,6,8}

for i = #t, 1, -1 do
    print(t[i])
end
bestswill={
{name='www',lvl=35,atk=38,npcPrice=15000,buyPrice=0},
{name='bbb',lvl=40,atk=40,npcPrice=20000,buyPrice=0},
{name='eee',lvl=50,atk=42,npcPrice=25000,buyPrice=0},
{name='sss',lvl=55,atk=43,npcPrice=30000,buyPrice=0},
{name='aaa',lvl=60,atk=44,npcPrice=30000,buyPrice=0},
{name='qwe',lvl=70,atk=46,npcPrice=35000,buyPrice=0},
{name='asd',lvl=82,atk=48,npcPrice=60000,buyPrice=0}
}
myLevel=53——通缉级别
--临时桌
可能={}
--提取范围内的
对于ipairs中的k,v(最佳剑术)do
如果v.lvl b.atk结束)
最佳剑=可能[1]
打印(“最好的剑是”,BestSwarm.name,“lvl=”,BestSwarm.lvl,
“atk=”,bestbrow.atk)
结束——如果

或者可以在卢亚制作一些地图?它必须是动态大小,所以我不能使用表,我猜。有关键价值的东西

Lua中的表是映射。每个表都有键/值对。这里使用的是数字键控的表格


所有的表都是动态调整大小的。

我几乎可以肯定这就是我需要的原因,让我检查一下:顺便问一下。开始时可能的大小是多少={}?在Lua中是一种动态表,或者在我插入/删除值时它只是创建一个新表?在这种情况下,请接受我的答案,以便堆栈溢出将其识别为接受的答案(您可以更改接受的答案)。表是键值映射。按照您构建它的方式,初始值的键是隐含的。有关表和具有序列的表,请参阅Lua文档。(可能在那之后再发一个单独的问题。)问得好。。。欢迎来到“向上投票级别”;-)
bestSword = {
  {name = 'www' , lvl = 35, atk = 38, npcPrice = 15000 , buyPrice = 0},
  {name = 'bbb' , lvl = 40, atk = 40, npcPrice = 20000 , buyPrice = 0},
  {name = 'eee' , lvl = 50, atk = 42, npcPrice = 25000 , buyPrice = 0},
  {name = 'sss' , lvl = 55, atk = 43, npcPrice = 30000 , buyPrice = 0},
  {name = 'aaa' , lvl = 60, atk = 44, npcPrice = 30000 , buyPrice = 0},
  {name = 'qwe' , lvl = 70, atk = 46, npcPrice = 35000 , buyPrice = 0},
  {name = 'asd' , lvl = 82, atk = 48, npcPrice = 60000 , buyPrice = 0}
}

myLevel = 53  -- wanted level

-- temporary table
possible = { }

-- extract ones which are in range
for k, v in ipairs (bestSword) do
  if v.lvl <= myLevel then
    table.insert (possible, v)
  end -- if
end -- for

if #possible == 0 then
  print "No matching swords"
else
  table.sort (possible, function (a, b) return a.atk > b.atk end )
  bestSword = possible [1]
  print ("Best sword is", bestSword.name, "lvl =", bestSword.lvl,
         "atk = ", bestSword.atk)
end -- if