можно сортировать таблицу с двумя кусками информации (имя и второй части, такие как возраст) со следующим кодом:Сортировка таблицы, содержащей таблицы
t = {
Steve = 4,
Derek = 1,
Mike = 5,
Steph = 10,
Mary = 7,
Danny = 2
}
function pairsByKeys (t,f)
local a = {}
for x in pairs (t) do
a[#a + 1] = x
end
table.sort(a,f)
local i = 0
return function()
i = i + 1
return a[i], t[a[i]]
end
end
for a,t in pairsByKeys (t) do
print (a,t)
end
Результат:
Danny 2
Derek 1
Mary 7
Mike 5
Steph 10
Steve 4
У меня есть сценарий, где на конвенции каждый тег имени пользователя содержит штрих-код. Этот штрих-код, при сканировании, вводит четыре части информации о каждом человеке в базу данных таблицы. Эта база данных состоит из следующих частей:
t = {
{name = "Mike", addr = "738 Rose Rd", age = 30, phone = "333-902-6543"}
{name = "Steph", addr = "1010 Mustang Dr", age = 28, phone = "555-842-0606"}
{name = "George", addr = "211 Glass St", age = 34, phone = "111-294-9903"}
}
Но как бы я изменить мой код, чтобы отсортировать все четыре записи (имя, адр, возраст, телефон) по возрасту и сохранить все переменные в соответствии друг с другом?
Я пытался поэкспериментировать и получаю возможность сортировать стол на pairs
и лучше подумать, как выполнить table.sort
. Но теперь я хочу сделать еще один шаг.
Могу ли я получить помощь от одного из гуру программирования здесь ?! Очень благодарны ребятам! Благодаря!
Спасибо. Но как бы я установил ключи, равные «возрасту», без необходимости делать это физически? (и по какой-то причине я не могу ответить вам, @Lorenzo Donati?) – Pwrcdr87
@LorenzoDonatiOk. Я просто понял, что у меня не было «local timer = os.time() repeat до os.time()> timer + 10' в конце. Оно работает! Спасибо! – Pwrcdr87