我需要一个函数
sort_on_values(t, ...)
其中 ...
是表 t
应该排序的变量。
或 sort_on_values(t, t_v)
其中 t_v
是一个包含变量的表,表 t
应该按照这些变量进行排序。
或者类似的东西。
函数返回排序表或对现有表进行排序。
示例#1:
我有一张 table
t = {{a=1,b=2,c=3},
{a=1,b=1,c=2},
{a=3,b=2,c=2}}
我这样做:
t = sort_on_values(t,a,b,c)
结果我得到:
t == {{a=1,b=1,c=2},
{a=1,b=2,c=2},
{a=3,b=2,c=2}}
示例 #2:
我这样做:
t = sort_on_values(t,b,a,c)
结果我得到:
t == {{a=1,b=1,c=2},
{a=1,b=2,c=3},
{a=3,b=2,c=2}}
如果我有这样的表,这也应该有效
t = {{a=1,b=1,c=2,d=1},
{a=1,b=2,c=3,d=2},
{a=3,b=2,c=2,d=3}}
等等。
我该怎么做?
最佳答案
vararg 函数的变体
function sort_on_values(t,...)
local a = {...}
table.sort(t, function (u,v)
for i = 1, #a do
if u[a[i]] > v[a[i]] then return false end
if u[a[i]] < v[a[i]] then return true end
end
end)
end
关于sorting - 如何在lua中对多个值的表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45164441/