加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在Lua中按值分类一个表

发布时间:2020-12-15 00:23:53 所属栏目:大数据 来源:网络整理
导读:我有一个键=值表我想在Lua中排序。键都是整数,但不是连续的(而且有意义)。 Lua的唯一排序函数似乎是 table.sort ,它将表视为简单数组,丢弃原始密钥及其与特定项目的关联。相反,我本来希望能够使用 PHP’s asort() 功能。 我拥有的: items = { [1004] =
我有一个键=>值表我想在Lua中排序。键都是整数,但不是连续的(而且有意义)。 Lua的唯一排序函数似乎是 table.sort,它将表视为简单数组,丢弃原始密钥及其与特定项目的关联。相反,我本来希望能够使用 PHP’s asort()功能。

我拥有的:

items = {
    [1004] = "foo",[1234] = "bar",[3188] = "baz",[7007] = "quux",}

在排序操作后我想要什么

items = {
    [1234] = "bar",[1004] = "foo",}

有任何想法吗?

编辑:根据答案,我将假设这是我正在使用的特定嵌入式Lua解释器的奇怪怪癖,但是在我的所有测试中,pair()总是按照它们的顺序返回表项被添加到表中。 (即上述两个声明将不同地进行迭代)。

不幸的是,因为这不是正常的行为,看起来我不能得到我需要的东西; Lua没有内置的必要工具(当然),嵌入式环境对我来说太有限了。

不过,谢谢你的帮助,所有!

解决方法

你似乎误解了一些事情。你在这里有一个 associative array.关联数组对它们没有明确的顺序,例如它只是内部表示(通常排序)来排序它们。

简而言之,在Lua中,您发布的两个数组都是一样的。

你想要的是这样的代表:

items = {
    {1004,"foo"},{1234,"bar"},{3188,"baz"},{7007,"quux"},}

虽然您现在无法通过索引获取索引(它们被索引为1,2,3,4,但您可以创建另一个索引数组),您可以使用table.sort进行排序。

然后排序功能:

function compare(a,b)
  return a[1] < b[1]
end

table.sort(items,compare)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读