排序一个包含数组的表格

这可能比我自己想的要简单。我相对于 Lua 而言比较新手,但对其他语言有经验。

我有这样一个表格:

local state = {}
state[1] = {
   show = true,
   changed = true,
   progressType = "static",
   value = 0,
   total = 9,
   name = "nine",
}

state[2] = {
   show = true,
   changed = true,
   progressType = "static",
   value = 0,
   total = 7,
   name = "seven",
}

state[3] = {
   show = true,
   changed = true,
   progressType = "static",
   value = 0,
   total = 8,
   name = "eight",
}

state[4] = {
   show = true,
   changed = true,
   progressType = "static",
   value = 0,
   total = 6,
   name = "six",
}

我需要做的是基于 table.value5 的值对每个 table[] 条目进行排序。我在文档中找不到任何表达超过基本的 table.sort 的函数,所以我有点卡住了。我需要通过迭代并创建一个新表与排序数据排序吗?

点赞
用户12730491
用户12730491

我在文档中找不到任何功能明确表示它们所做的不仅是基本的 table.sort,因此我感到有些困惑。

我可能没有理解你的问题,但在这种情况下,table.sort恰好是你需要的:

local state = {}
state[1] = {
   total = 9,
   name = "nine",
}

state[2] = {
   total = 7,
   name = "seven",
}

state[3] = {
   total = 8,
   name = "eight",
}

state[4] = {
   total = 6,
   name = "six",
}

-- 使用带有自定义匿名函数的 table.sort 来指定如何比较嵌套表。
table.sort(state, function (a, b)
    return a.total < b.total
end)

for i=1, #state do
  print(i, state[i].name)
end

使用 table.sort 时,您可以提供一个可选的自定义函数,它可以像您想要的那样简单或复杂。在这种情况下(根据您的问题),只需比较表的total值即可。

2020-02-14 18:53:24