lua中对数组排序的问题
functionorder(x)maxn=table.getn(x)forj=1,maxn,1dofori=j,maxn,1doifx[j].no<x[i].nothen...
function order(x)
maxn = table.getn(x)
for j=1,maxn ,1 do
for i = j,maxn,1 do
if x[j].no < x[i].no then
x[j],x[i] = x[i],x[j]
end
end
end
return x
end
以上是以数组的.no项来进行排序的
现在我想把函数调整为orderby(x,y)
其中y代表的是数组中的排序的列名,应该咋实现啊? 展开
maxn = table.getn(x)
for j=1,maxn ,1 do
for i = j,maxn,1 do
if x[j].no < x[i].no then
x[j],x[i] = x[i],x[j]
end
end
end
return x
end
以上是以数组的.no项来进行排序的
现在我想把函数调整为orderby(x,y)
其中y代表的是数组中的排序的列名,应该咋实现啊? 展开
2个回答
展开全部
.no的含义和["no"]是一样的。所以改成下面这样
function orderby(x,y)--x是数组,y是列名用字符串,比如"no"
maxn = table.getn(x)
for j=1,maxn ,1 do
for i = j,maxn,1 do
if x[j][y] < x[i][y] then
x[j],x[i] = x[i],x[j]
end
end
end
return x
end
function orderby(x,y)--x是数组,y是列名用字符串,比如"no"
maxn = table.getn(x)
for j=1,maxn ,1 do
for i = j,maxn,1 do
if x[j][y] < x[i][y] then
x[j],x[i] = x[i],x[j]
end
end
end
return x
end
更多追问追答
追问
对啊,谢谢谢谢
那有没有方法得到orderby中的y呢?特别是在不知道y是多少的情况下
追答
比如数组x={{a=1,b="n",c=true},{a=2,b="f",c=true}}
怎么能取到abc这3个列名?
for _,sub in pairs(x) do
for k,v in pairs(sub) do
print(k)--k是字符串 ”a“,”b“,”c“
end
end
展开全部
这是升序
table.sort(a,function(v1,v2)return v1.no < v2.no end)
这是降序
table.sort(a,function(v1,v2)return v1.no > v2.no end)
其中a是要排序的表名
要学会灵活使用lua自带的库函数
table.sort(a,function(v1,v2)return v1.no < v2.no end)
这是降序
table.sort(a,function(v1,v2)return v1.no > v2.no end)
其中a是要排序的表名
要学会灵活使用lua自带的库函数
追问
哎,帮助文件是全英文的,看不懂啊...
那获得二维数组中的列名的方式该怎么做啊?
比如数组x={{a=1,b="n",c=true},{a=2,b="f",c=true}}
怎么能取到abc这3个列名?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询