我想按字母顺序对表格进行排序。除了数字。
下面的代码显示了如何使用比较器函数对表格进行排序:
function( a,b ) return a.N < b.N end
给我:
obj = {
[1] = {
["N"] = "Green 1";
};
[2] = {
["N"] = "Green 11";
};
[3] = {
["N"] = "Green 2";
};
[4] = {
["N"] = "Red 1";
};
}
但我希望它像这样排序:
obj = {
[1] = {
["N"] = "Green 1";
};
[2] = {
["N"] = "Green 2";
};
[3] = {
["N"] = "Green 11";
};
[4] = {
["N"] = "Red 1";
};
}
可能吗?
最佳答案
试试这个:
local function split(a)
local x,y=a.N:match("(%S+)%s+(%S+)")
return x,tonumber(y)
end
table.sort(obj,
function (a,b)
local a1,a2=split(a)
local b1,b2=split(b)
return a1<b1 or (a1==b1 and a2<b2)
end
)
关于sorting - Lua 按字母顺序对表进行排序,数字除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27909784/