希望该功能由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
答案 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
子句中排在第一位,这样如果它不同,它将跳过任何其他检查并且只需根据惠普确定。