Lua 中如何对多维表进行排序?

我的表基本上包含以下内容:

myTable = {{1, 6.345}, {2, 3.678}, {3, 4.890}}

我想按十进制值对表进行排序。 因此,我想要的输出是:

{{2, 3.678}, {3, 4.890}, {1, 6.345}}

如果可能,我想使用 table.sort() 函数。事先感谢您的帮助 :-)

点赞
用户9593596
用户9593596

考虑到你的表是一个序列,你可以直接使用 table.sort。这个函数接受一个比较函数作为它的第二个参数,这个函数用来定义比较逻辑:

require 'table'

myTable = {{1, 6.345}, {2, 3.678}, {3, 4.890}}

table.sort(myTable, function(lhs, rhs) return lhs[2] < rhs[2] end)

例如将这个表打印出来 for _, v in ipairs(myTable) do print(v[1], v[2]) end 就会按照需求的顺序显示:

2       3.678
3       4.89
1       6.345

关键在于这里不是表的维度,而是它是一个序列,即有序的。

2019-10-22 09:28:41