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

标签 lua lua-table

例子:

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/

相关文章:

timer - 如果 NodeMCU 计时器中的代码在我设置的计时器间隔内执行,会发生什么情况?

android - Corona SDK 中的文本字段被键盘隐藏

c++ - 如何使用重新定义的打印功能打印 Lua 表?

lua - 'nil' 作为 Lua 表中的一个元素?

Lua - 从嵌套表中获取值

lua - Lua模式中的逻辑 'or'?

multidimensional-array - 嵌套数组lua的长度

linker - 静态链接lua的问题

Lua 中的字符串操作/处理,字符串中单词的旋转

c++ - LuaPlus 创建 Lua 表