1

我有一张这样的桌子:

tbl = {
    ['etc1'] = 1337,
    ['etc2'] = 14477,
    ['etc3'] = 1336,
    ['etc4'] = 1335
}

现在我需要对这个表进行排序,以获得从最高值到最低值的输出:

tbl = {
    ['etc2'] = 14477,
    ['etc1'] = 1337,
    ['etc3'] = 1336,
    ['etc4'] = 1335
}

已经尝试了很多功能,如 table.sort 或官方手册中的其他功能,但没有任何帮助。所以希望你们能帮助我!

问候。

4

1 回答 1

1

Lua 表除了按键之外没有排序。您将需要像这样构造数据:

tbl = {
    [1] = { ['etc2'] = 14477 },
    [2] = { ['etc1'] = 1337 },
    [3] = { ['etc3'] = 1336 },
    [4] = { ['etc4'] = 1335 }
}

或这个:

tbl = {
    [1] = { 'etc2', 14477 },
    [2] = { 'etc1', 1337 },
    [3] = { 'etc3', 1336 },
    [4] = { 'etc4', 1335 }
}

或者这个,如果你想将它与原始表一起使用:

tbl_keys = {
    [1] = 'etc2',
    [2] = 'etc1',
    [3] = 'etc3',
    [4] = 'etc4'
}

请注意,我非常明确并写了所有数字索引。你当然可以省略它们,所以最后的解决方案是:

tbl_keys = {
    'etc2',
    'etc1',
    'etc3',
    'etc4'
}

也许这意味着您应该编写一个将原始数据转换为这种新形式的函数,或者您可以在首先制作表格之前提前完成它。

于 2011-07-17T18:15:54.790 回答