sorting - 如何在lua中对多个值的表进行排序?

标签 sorting lua

我需要一个函数 sort_on_values(t, ...) 其中 ... 是表 t 应该排序的变量。 或 sort_on_values(t, t_v) 其中 t_v 是一个包含变量的表,表 t 应该按照这些变量进行排序。 或者类似的东西。

函数返回排序表或对现有表进行排序。

示例#1:

我有一张 table

t = {{a=1,b=2,c=3},
     {a=1,b=1,c=2},
     {a=3,b=2,c=2}}

我这样做:

t = sort_on_values(t,a,b,c)

结果我得到:

t == {{a=1,b=1,c=2},
      {a=1,b=2,c=2},
      {a=3,b=2,c=2}}

示例 #2:

我这样做:

t = sort_on_values(t,b,a,c)

结果我得到:

t == {{a=1,b=1,c=2},
      {a=1,b=2,c=3},
      {a=3,b=2,c=2}}

如果我有这样的表,这也应该有效

t = {{a=1,b=1,c=2,d=1},
     {a=1,b=2,c=3,d=2},
     {a=3,b=2,c=2,d=3}}

等等。

我该怎么做?

最佳答案

vararg 函数的变体

function sort_on_values(t,...)
  local a = {...}
  table.sort(t, function (u,v)
    for i = 1, #a do
      if u[a[i]] > v[a[i]] then return false end
      if u[a[i]] < v[a[i]] then return true end
    end
  end)
end

关于sorting - 如何在lua中对多个值的表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45164441/

相关文章:

java - 在 Java 中对多语言环境字符串进行排序

R-dplyr-减少数据包 'storms'

sorting - 在 GoLang 中排序对

c++ - 用于嵌入式脚本/文本处理引擎的 Python vs Lua

python - 在 C 中嵌入 Tensorflow/Torch 以集成到更大的项目中

java - 使用 compareTo 和 Collections.sort

python - 最长递增唯一子序列

lua - 使用 LUA 将字符串中的重音字符替换为标准

c - 如何防止 Lua 使用 stdio 或在 rtos 中重定向 stdio

c++ - Lua C API - 使用同名的变量和函数加载多个文件