如何根据另一个有序表格排序表格?

我有一个特定的表格,具有自然数字键和字符串值,如 {"192", "127", "114", "186"},它可以被称为 有序表格,还有一个表格是有序表格的子集,但是顺序是混乱的,例如 {"114", "192"}。如何根据有序表格对后者进行排序?

点赞
用户90511
用户90511

一件事情你可以做的是创建一个帮助表,将一个字符串映射到其在“有序表”中的位置。这样可以快速查看给定两个字符串,哪个应该出现在另一个之前。

然后,你可以使用这个帮助表来实现排序的比较函数。在 Lua 中,table.sort 有一个可选参数,即自定义比较函数。这个比较函数应该接受从表中取出的一对值 (s1s2),并根据你所需的顺序返回 true 如果 s1<s2

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)
2016-08-23 02:33:30