Lua中的table.sort问题。

所以,我正在遇到一些问题,无法正确在表格中进行排序。

基本上,table.sort 认为 10 == 1,20 == 2,依此类推。我将在下面发布我的排序代码,但我不确定它是否与此有关。这是否只是 Lua 中表格排序算法固有的问题?

if svKey == "q" and metalMatch == true then
    table.sort(vSort.metals, function(oneMQ, twoMQ)
        return oneMQ.metalQ > twoMQ.metalQ
    end)
end

存储在 vSort.metals.metalQ 中的值是 1 到 3 位数字的字符串。有没有办法让 table.sort 区分单个、双个和三个数字值?

点赞
用户2226988
用户2226988

订单运算符的工作方式如下。如果两个参数都是数字,则会按照数字进行比较。否则,如果两个参数都是字符串,则根据当前区域设置比较它们的值。你可以设置区域设置。字符串按字典顺序进行比较,通常是逐个字符比较,较短的字符串排在较长的字符串前面。

如果您想进行数字排序,则使用数字类型。这可能会起作用:

function(oneMQ, twoMQ)
    return tonumber(oneMQ.metalQ) > tonumber(twoMQ.metalQ)
end

它假定所有metalQ值都是数字。如果不是,则将其强制转换为默认值或在排序表达式中为非数字值提供回退排序顺序。

2014-06-03 03:19:35