加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 00:16:31 所属栏目:大数据 来源:网络整理
导读:例: 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) 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,1}
local table2 = {"a","b","c"}
local sorted = sort_relative(table1,table2)
print(table.unpack(sorted))

结果是:

c   a   b

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读