我需要一个函数sort_on_values(t, ...)
,...
其中t
应该对表进行排序的变量在哪里。或sort_on_values(t, t_v)
wheret_v
是带有变量的表,t
应根据该表对表进行排序。或类似的东西。
函数返回已排序的表或对现有表进行排序。
示例#1:
我有一张桌子
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句