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

我在学习 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}

我会非常感谢你的帮助,这真的很累人。

原文链接 https://stackoverflow.com/questions/70888189

点赞
stackoverflow用户2858170
stackoverflow用户2858170

我想要做的只是从那个表中获得前两个表并使用它们的值。

要获取内部表,只需使用您存储到内部表中的键对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],其中i从1到x。

2022-01-28 10:15:15
stackoverflow用户14777448
stackoverflow用户14777448

首先,你需要对表进行排序:

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

你不需要将这些值索引为“player1”,“player2”等等。所以,如果你想让索引显示为player1等等,可以将索引和player连接起来,比如:

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”的参数(作为响应的最大值)返回这些值。

或者说:遍历表“myTable”,只返回一个包含2个字段的表。

2022-02-22 00:52:27