Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting Lua迭代按值排序的表_Sorting_Lua_Iterator - Fatal编程技术网

Sorting Lua迭代按值排序的表

Sorting Lua迭代按值排序的表,sorting,lua,iterator,Sorting,Lua,Iterator,我有一个表t,有许多条目,如t[“name1”]=42,t[“name2”]=123,… 我想按数值的降序遍历该表。如何做到这一点?我已经找到了创建迭代器函数的方法,这些迭代器函数对表的键进行排序,但没有方法对具有排序值的条目进行排序 function pairs_order_by_values_desc(tab) local keys = {} for k in pairs(tab) do keys[#keys + 1] = k end table.sort

我有一个表
t
,有许多条目,如
t[“name1”]=42
t[“name2”]=123

我想按数值的降序遍历该表。如何做到这一点?我已经找到了创建迭代器函数的方法,这些迭代器函数对表的键进行排序,但没有方法对具有排序值的条目进行排序

function pairs_order_by_values_desc(tab)
   local keys = {}
   for k in pairs(tab) do
      keys[#keys + 1] = k
   end
   table.sort(keys, function(a, b) return tab[a] > tab[b] end)
   local j = 0
   return
      function()
         j = j + 1
         local k = keys[j]
         if k ~= nil then
            return k, tab[k]
         end
      end
end

local t = {}
t.name1 = 42
t.name2 = 123
t.name3 = 99

for k, v in pairs_order_by_values_desc(t) do
   print(k, v)
end