【问题标题】:table value sorting in lualua中的表值排序
【发布时间】:2011-10-07 05:31:54
【问题描述】:

我有一张这样的桌子:

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

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

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

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

问候。

【问题讨论】:

标签: sorting lua lua-table


【解决方案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'
}

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

【讨论】:

  • 好吧。我正在以这种方式创建我的表: dmg = {} if not dmg[attacker] then dmg[attacker] = value else dmg[attacker] = dmg[attacker] + value end 那么,我该如何更改它以便输出可以看起来像你的一个例子?费。 : tbl = { [1] = { ['etc2'] = 14477 }, [2] = { ['etc1'] = 1337 }, [3] = { ['etc3'] = 1336 }, [4] = { ['etc4'] = 1335 } } 问候。
  • 如果遇到困难,为什么不尝试一下并发布一个新问题?
  • 我看到你把它贴在这里了:stackoverflow.com/questions/6726130/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-03
  • 1970-01-01
  • 2020-02-08
  • 2012-04-19
  • 1970-01-01
  • 2014-11-27
  • 1970-01-01
相关资源
最近更新 更多