【问题标题】:How to get x first objects from table - lua如何从表中获取 x 个第一个对象 - lua
【发布时间】:2022-02-24 09:16:58
【问题描述】:

我是 lua 的新手,我有一个问题我已经尝试解决了几个小时。 所以很简单,我有一张桌子和另外 4 张桌子(我知道它是如何命名的)。

local myTable = {
 player1 = {id = 1, points = 100},
 player2 = {id = 3, points = 200},
 player3 = {id = 4, points = 150},
 player4 = {id = 7, points = 150}}

Id 和 points 是随机数。 我要做的就是从该表中仅获取 2 个第一表并使用它们的值。

player1 = {id = 1, points = 100}
player2 = {id = 3, points = 200}

非常感谢您的帮助,这很累。

【问题讨论】:

    标签: lua lua-table


    【解决方案1】:

    我只想从该表中获取 2 个第一表并使用 他们的价值观。

    要获取内部表,只需使用您存储到内部表的键索引myTable

    local table1 = myTable.player1
    local table2 = myTable.player2
    
    print("Player 1 has " .. table1.points .. " points")
    

    如何从表中获取第 x 个对象 - lua

    要回答这个问题,您需要一张带有订单的桌子。除非你有数字键,否则 Lua 不知道你的表的顺序。

    如果你的桌子是这样的

    local players = {
     {id = 1, points = 100},
     {id = 3, points = 200},
     {id = 4, points = 150},
     {id = 7, points = 150}}
    

    您只需选择 players[1] 等来获取前 x 个元素。

    在你的情况下,你可以做类似的事情

    myTable["player"..i] for i 从 1 到 x 假设键表示表顺序。

    【讨论】:

      【解决方案2】:

      首先您需要对表格进行排序:

      local myTable = {
          {id = 1, points = 100},
          {id = 3, points = 200},
          {id = 4, points = 150},
          {id = 7, points = 150}
      }
      

      您不需要将这些值索引为“player1”、“player2”等。因此,如果您希望索引显示为 player1 等,请返回索引并连接为播放器,例如:

      for key, value in pairs(myTable) do
          print('player' .. key)
      end
      

      过去的代码将打印所有带有前缀'player'的表索引。 但是只得到前两个值;我们能做什么?简单的!做一个函数:

      local myTable = {
          {id = 1, points = 100},
          {id = 3, points = 200},
          {id = 4, points = 150},
          {id = 7, points = 150}
      }
      
      local function collect(table, howMuch)
          local response, index = {}, 1
          for key, value in pairs(table) do
              response[key] = howMuch and index <= howMuch and value or nil
              index = index + 1
          end
          return response
      end
      
      local response = collect(myTable, 2)
      print(response[1].id, response[2].id, response[3]) -- 1, 3, nil
      

      这个函数有什么作用? 从名为 table 的第一个参数中收集值,并在名为 howMuch 的第二个参数的基础上(作为响应的最大值)返回这些值。

      或者给朋友:iters 表 myTable 并且只返回一个包含 2 个字段的表。

      【讨论】:

      • tyvm 回复,非常有帮助:]
      猜你喜欢
      • 2016-03-20
      • 2021-03-23
      • 1970-01-01
      • 2019-11-26
      • 2015-01-18
      • 1970-01-01
      • 2017-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多