2009-11-01 1 views
0

Хотите, чтобы функция сортировала таблицу с помощью HP, но если дубликаты HP сортируются по имени. Когда я запускаю эту функцию, он просто группирует дубликаты HP вместе ни в каком порядке по имени.Сортировка таблиц Дважды в одной функции - Lua

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 

ответ

2

Попробуйте сортировать FUNC:

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 

Поскольку вы хотите всегда отличаясь HPS быть порядок первичной сортировки (и название вторичного), вы хотите HP проверить прийти первым в предложении or так что, если он отличается, он пропустит любые другие проверки и просто определит на основе HP.