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

Lua Table Sorting 2比较

发布时间:2020-12-15 00:16:04 所属栏目:大数据 来源:网络整理
导读:我已经在这里找到了尽可能多的答案,因为我可以找到我认为足够接近我的问题的标题.我没有看到任何人有我的确切问题,所以我问一个问题,我希望只是我对一个简单的事实一无所知. 我正在尝试编写一个记录HP(int)和距离(boolean)的表,然后按HP排序,只有顶部附近的R
我已经在这里找到了尽可能多的答案,因为我可以找到我认为足够接近我的问题的标题.我没有看到任何人有我的确切问题,所以我问一个问题,我希望只是我对一个简单的事实一无所知.

我正在尝试编写一个记录HP(int)和距离(boolean)的表,然后按HP排序,只有顶部附近的Range中的那些.

local tableTest = {
    {hp = 64,range = true,name="Frank"},{hp = 100,name="Joe"},{hp = 2,range = false,name="Jim"},{hp = 76,name="Tim"},{hp = 17,name="Jill"},{hp = 16,name="Phillip"},}

-- Sort by HP and Range to find lowest Unit in Range.
table.sort(tableTest,function(x,y) return x.hp < y.hp and x.range end)

for i=1,#tableTest do print(tableTest[i].name,tableTest[i].hp) end

这个输出是:

Phillip 16
Jim     2
Frank   64
Jill    17
Tim     76
Joe     100

我期待的输出是:

Phillip 16
Frank   64
Tim     76
Joe     100
Jim     2
Jill    17

我祈祷这只是我对table.sort如何使用这样的多个检查的误解(我认为它更接近你如何声明这样的变量).

编辑
附加信息 – 如果我更改范围= false索引在表中的位置顺序,输出也会更改(仍然不正确).这些值只是在排序后将自己排序为不同的索引.

解决方法

根据您的描述,您的订单功能需要先比较范围,然后比较hp.
table.sort(tableTest,y) 
                          if x.range and y.range then return x.hp < y.hp 
                          elseif x.range then return true
                          elseif y.range then return false
                          else return x.hp < y.hp end
                      end)

也许有一些较短的版本,但这个肯定有效,逻辑清晰.

(编辑:李大同)

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

    推荐文章
      热点阅读