在一个函数中对表进行两次排序 - Lua

时间:2009-11-01 09:07:13

标签: lua

希望该功能由HP对表进行排序,但是如果重复的HP则按名称排序。当我运行此功能时,它只是按名称将重复的HP组合在一起。

T = { {Name = "Mark", HP = 54, Breed = "Ghost"}, {Name = "Stan", HP = 24, Breed = "Zombie"}, {Name = "Juli", HP = 100, Breed = "Human"}, { HP = 100, Breed = "Human"} }

function(x, y) if x.Name == nil or y.Name == nil then return x.HP < y.HP else return x.Name < y.Name and x.HP < y.HP end end) end

1 个答案:

答案 0 :(得分:2)

尝试这种排序功能:

function(x,y)
    if x.Name == nil or y.Name == nil then
        return x.HP < y.HP
    else
        return x.HP < y.HP or (x.HP == y.HP and x.Name < y.Name)
    end
end

由于您始终希望不同的HP成为主要排序顺序(并且名称为辅助排序),因此您希望HP检查在or子句中排在第一位,这样如果它不同,它将跳过任何其他检查并且只需根据惠普确定。