关联数组排序值
Associative Array sorting value
我有以下代码,应该 return 我根据其 'pos' 值排序数组。
local tables = {}
table.insert(tables,{ ['pos']=2, ['name'] = 'C' })
table.insert(tables, {['pos']=1, ['name'] = 'A' })
table.insert(tables,{ ['pos']=30, ['name'] = 'D'} )
function comp(w1,w2)
if tonumber(w1['pos']) > tonumber(w2['pos']) then
return true
end
end
table.sort(tables, comp)
for key,val in pairs(tables) do
print(val['name'])
end
结果是:
D
C
A
预计(按 "pos" 字母顺序排序):
一个,
C,
D
怎么了?
来自 PIL 中 table.sort(table [, comp])
的文档:
[comp] This order function receives two arguments and must return true if the
first argument should come first in the sorted array
所以把函数改成:
function comp(w1,w2)
return w1['pos'] < w2['pos']
end
注意 tonumber
和 if 在这里都是不必要的。
正如@lhf 指出的那样,这还可以变得更简单:
table.sort(tables, function(w1, w2) return w1.pos < w2.pos end)
我有以下代码,应该 return 我根据其 'pos' 值排序数组。
local tables = {}
table.insert(tables,{ ['pos']=2, ['name'] = 'C' })
table.insert(tables, {['pos']=1, ['name'] = 'A' })
table.insert(tables,{ ['pos']=30, ['name'] = 'D'} )
function comp(w1,w2)
if tonumber(w1['pos']) > tonumber(w2['pos']) then
return true
end
end
table.sort(tables, comp)
for key,val in pairs(tables) do
print(val['name'])
end
结果是:
D C A
预计(按 "pos" 字母顺序排序):
一个, C, D
怎么了?
来自 PIL 中 table.sort(table [, comp])
的文档:
[comp] This order function receives two arguments and must return true if the first argument should come first in the sorted array
所以把函数改成:
function comp(w1,w2)
return w1['pos'] < w2['pos']
end
注意 tonumber
和 if 在这里都是不必要的。
正如@lhf 指出的那样,这还可以变得更简单:
table.sort(tables, function(w1, w2) return w1.pos < w2.pos end)