如何对值本身是表格的表格进行排序

我如何基于序列值对此表进行排序

Record['Personnel Number']={['sequence']=1, ['mapping']='data',['value']='employeeCode', ['decode']='', ['expression']=''}

Record['Effective Date']={['sequence']=3, ['mapping']='data', ['value']='payDate', ['decode']='', ['expression']=''}

Record['Unit']={['sequence']=4, ['mapping']='data', ['value']='payUnit', ['decode']='', ['expression']=''}

Record['Wage Type']={['sequence']=2, ['mapping']='data', ['value']='payCode', ['decode']='', ['expression']=''}
点赞
用户2858170
用户2858170

你可以使用table.sort函数对列表进行排序。

table.sort(list [,comp])

按照给定的顺序对list列表元素进行原地排序,从list [1]list [#list]。如果给出了comp,则必须是一个接受两个列表元素的函数,并在最终排序中第一个元素必须出现在第二个元素之前时返回true

local comp = function(a,b) return a.sequence < b.sequence end

将通过其元素表的顺序值对列表进行排序。

你没有一个列表。 Lua表键值对没有顺序。因此你不能进行排序。

通过在数字键之间交换值来对列表进行排序。

2019-08-22 11:15:27
用户2226988
用户2226988

如果序列值是唯一的且不与现有的键冲突,则可以创建一个备用索引:

for k,v in pairs(Record) do
    if type(v) == "table" then
        Record[v.sequence] = v
        v.key = k -- 可选
    end
end

然后,

  1. 您可以按序列值进行索引
print(Record[4].key, Record[4].value)
  1. 如果序列值也都是整数,从1开始且不在中间跳过,您可以使用“ipairs”来迭代
for i,v in ipairs(Record) do
    print(i, v.key, v.value)
end
2019-08-24 22:56:05