сортировка табличных значений в lua - PullRequest
1 голос
/ 17 июля 2011

У меня есть такой стол:

tbl = {
    ['etc1'] = 1337,
    ['etc2'] = 14477,
    ['etc3'] = 1336,
    ['etc4'] = 1335
}

А теперь мне нужно отсортировать эту таблицу, чтобы получить значение от максимума до минимума:

tbl = {
    ['etc2'] = 14477,
    ['etc1'] = 1337,
    ['etc3'] = 1336,
    ['etc4'] = 1335
}

Уже пробовал множество функций, таких как table.sort или другие из официального руководства, но ничего не помогло. Надеюсь, вы мне поможете, ребята!

Привет.

1 Ответ

1 голос
/ 17 июля 2011

Lua таблицы не имеют порядка, кроме как по их ключам. Вам нужно будет структурировать ваши данные, например, так:

tbl = {
    [1] = { ['etc2'] = 14477 },
    [2] = { ['etc1'] = 1337 },
    [3] = { ['etc3'] = 1336 },
    [4] = { ['etc4'] = 1335 }
}

или это:

tbl = {
    [1] = { 'etc2', 14477 },
    [2] = { 'etc1', 1337 },
    [3] = { 'etc3', 1336 },
    [4] = { 'etc4', 1335 }
}

или это, если вы хотите использовать его вместе с исходной таблицей:

tbl_keys = {
    [1] = 'etc2',
    [2] = 'etc1',
    [3] = 'etc3',
    [4] = 'etc4'
}

Обратите внимание, что я был очень явным и написал все числовые индексы. Вы, конечно, можете их опустить, поэтому последнее решение будет:

tbl_keys = {
    'etc2',
    'etc1',
    'etc3',
    'etc4'
}

Может быть, это означает, что вам следует написать функцию, которая преобразует исходные данные в эту новую форму, или, может быть, вы можете сделать это раньше, до того, как таблица будет создана вообще.

...