|
Sorting table iterator May 14, 2016 02:27PM |
Registered: 9 years ago Posts: 659 |
for k,v in spairs(finds, function(t,a,c) return c < a end) do
print(k,v)
end
Iterating trough a list by cache_name in reverse order.
for k,v in spairs(finds, function(t,a,c) return t[c].cache_name < t[a].cache_name end) do
Print(k,v)
end
function spairs(t, order)
-- collect the keys
local keys = {}
for k in
Pairs(t) do keys[#keys+1] = k end
-- if order function given, sort by it by passing the table and keys a, b,
-- otherwise just sort the keys
if order then
TableSort(keys, function(a,b) return order(t, a, b) end)
else
TableSort(keys)
end
-- return the iterator function
local j = 0
return function()
j = j + 1
if keys[j] then
return keys[j], t[keys[j]]
end
end
end
|
Re: Sorting table iterator June 05, 2016 09:08PM |
Registered: 9 years ago Posts: 72 |
|
Re: Sorting table iterator April 26, 2020 08:32PM |
Registered: 9 years ago Posts: 24 |
|
Re: Sorting table iterator September 01, 2020 12:04PM |
Admin Registered: 9 years ago Posts: 881 |
|
Re: Sorting table iterator September 01, 2020 10:45PM |
Registered: 9 years ago Posts: 1,861 |
function spairs(t, order)
-- collect the keys
local keys = {}
for k in pairs(t) do keys[#keys+1] = k end
-- if order function given, sort by it by passing the table and keys a, b,
-- otherwise just sort the keys
if order then
table.sort(keys, function(a,b) return order(t, a, b) end)
else
table.sort(keys)
end
-- return the iterator function
local i = 0
return function()
i = i + 1
if keys then
return keys, t[keys]
end
end
end --function spairs
|
Re: Sorting table iterator September 03, 2020 12:39PM |
Registered: 8 years ago Posts: 4,127 |