例子:
table1 = {2,3,1}
table2 = {a,b,c}
到
table1 = {1,2,3}
table2 = {c,a,b}
最佳答案
此函数不修改任一表,并返回根据第一个表排序的第二个表。您可以传递第一个表中键的比较,例如 table.sort
.
local sort_relative = function(ref, t, cmp)
local n = #ref
assert(#t == n)
local r = {}
for i=1,n do r[i] = i end
if not cmp then cmp = function(a, b) return a < b end end
table.sort(r, function(a, b) return cmp(ref[a], ref[b]) end)
for i=1,n do r[i] = t[r[i]] end
return r
end
例如:
local table1 = {2, 3, 1}
local table2 = {"a","b","c"}
local sorted = sort_relative(table1, table2)
print(table.unpack(sorted))
结果是:
c a b
关于lua - 如何使用表顺序之一同时对两个表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28443085/