World of Warcraft Lua - таблица сортировки

Я пытаюсь отсортировать таблицу для надстройки / слабости, но не понимаю, как это сделать (отсортировать по значению атрибута).

Пример :

        player = {
            value = 34
            class = Warrior,
            id    = 1
        },  
        {
            value = 1,
            class = mage,
            id    = 2
        },
        {
            value = 3443,
            class = Paladin,,
            class = 3
        }    

Я хочу :

          player = {
            value = 1,
            class = mage,
            id    = 2
        },
        {
            value = 34
            class = Warrior,
            id    = 1
        },  
        {
            value = 3443,
            class = Paladin,
            class = 3
        }   

У кого-то есть идея, как это сделать?


person Lofka    schedule 24.06.2016    source источник
comment
Код недействителен, покажите настоящий код.   -  person Yu Hao    schedule 24.06.2016


Ответы (1)


Предполагая, что вы исправили объявление таблицы, вы можете отсортировать таблицу с помощью настраиваемой функции:

local player = {
  { value = 34, class = "Warrior", id = 1 },
  { value = 1, class = "mage",  id = 2 },
  { value = 3443, class = "Paladin", id = 3 },
}

table.sort(player, function(a,b) return a.value < b.value end)

Это отсортирует элементы таблицы player по значению поля value. При необходимости вы можете придумать более сложное условие сортировки.

См. http://www.lua.org/manual/5.3/manual.html#pdf-table.sort для получения дополнительной информации о table.sort.

person Paul Kulchenko    schedule 24.06.2016