gpt4 book ai didi

lua - 如何使用表顺序之一同时对两个表进行排序?

转载 作者:行者123 更新时间:2023-12-04 17:18:27 30 4
gpt4 key购买 nike

例子:

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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com