2
我有一个具有自然数字键和字符串值的具体表,如{"192", "127", "114", "186"}
,它可以被命名为有序表,并且还有另一个表是有序表的子集,但是没有顺序,例如{"114", "192"}
。我如何根据订购的表格对后者进行排序?如何根据另一个有序表格对表格进行排序?
我有一个具有自然数字键和字符串值的具体表,如{"192", "127", "114", "186"}
,它可以被命名为有序表,并且还有另一个表是有序表的子集,但是没有顺序,例如{"114", "192"}
。我如何根据订购的表格对后者进行排序?如何根据另一个有序表格对表格进行排序?
你可以做的一件事是创建一个帮助表,将一个字符串映射到它在“有序表”中的位置。这可以让你快速看到,给出两个字符串,应该出现在另一个之前。
然后,您可以使用此帮助程序表为您的排序实施比较功能。在Lua中,table.sort
有一个可选参数,它是一个自定义比较函数。该比较功能应该接受来自表格(s1
和s2
)的一对值,并且如果s1 < s2
根据您希望的顺序应该返回true
。
ordered_table = {"192", "127", "114", "186"}
indexes = {}
for i, s in ipairs(ordered_table) do
indexes[s] = i
end
unordered_table = {"114", "192"}
table.sort(unordered_table, function(s1, s2)
local i1 = assert(indexes[s1])
local i2 = assert(indexes[s2])
return i1 < i2
end)
无法将字符串值转换为数字 –