当前位置 : 主页 > 网络编程 > lua >

lua – 如何使用其中一个表顺序同时对两个表进行排序?

来源:互联网 收集:自由互联 发布时间:2021-06-23
例: table1 = {2,3,1}table2 = {a,b,c} 至 table1 = {1,2,3}table2 = {c,a,b} 此函数不会修改任何一个表,并返回根据第一个表排序的第二个表.您可以在第一个表中传递键的比较,就像在table.sort中一样. l
例:

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
网友评论