无法使用关联索引对表进行排序。

为什么我不能使用 table.sort 对具有关联索引的表进行排序?

原文链接 https://stackoverflow.com/questions/2097411

点赞
stackoverflow用户44743
stackoverflow用户44743

因为它们本来就没有任何顺序。这就像试图对一袋装满香蕉的垃圾袋进行排序。

2010-01-19 21:58:23
stackoverflow用户41661
stackoverflow用户41661

你只能对连续整数键值(即列表)的表进行排序。如果你有另一个键值对表,你可以将它们转换成一系列的键值对并进行排序:

function sortpairs(t, lt)
  local u = { }
  for k, v in pairs(t) do table.insert(u, { key = k, value = v }) end
  table.sort(u, lt)
  return u
end

当然,这只有在你提供一个接收键值对作为参数的自定义排序函数(lt)时才有用。

关于在 Lua 中对表进行排序的问题讨论得更详尽的可以参考相关问题

2010-01-20 09:41:14