Luaの

2011-07-17 4 views
1

で降順に私はそれが仕事を得ることはできません。Luaの

tbl = { 
    [1] = { ['etc2'] = 14477 }, 
    [2] = { ['etc1'] = 1337 }, 
    [3] = { ['etc3'] = 1336 }, 
    [4] = { ['etc4'] = 1335 } 
} 

for i = 1, #tbl do 
    table.sort(tbl, function(a, b) return a[i] > b[i] end) 
    print(tbl[i] .. '==' .. #tbl) 
end 

はこのエラーを取得:2つのnilの値

を比較しようとする試みは、これは後続のtable value sorting in lua

+0

ループ内でテーブルを並べ替えることはできません。また、どのように正確にソートしようとしていますか? 'a [i]'はnilです。 'a'は文字列インデックスを持つテーブルなのでです。 –

+0

SO Lucasへようこそ。質問を明確にする必要がある場合は、新しい質問を開くのではなく、投稿の下にある編集ボタンを使用してください。私はこのQ&Aが問題を最もよく扱うと信じているので、他の2つをこの重複のものとしてフラグを立てます。 – BMitch

+0

似たような質問:http://stackoverflow.com/questions/2038418/associatively-sorting-a-table-by-value-in-lua – BMitch

答えて

5
にあります

これはいかがですか?

tbl = { 
    { 'etc3', 1336 }, 
    { 'etc2', 14477 }, 
    { 'etc4', 1335 }, 
    { 'etc1', 1337 }, 
} 

table.sort(tbl, function(a, b) return a[2] > b[2] end) 

for k,v in ipairs(tbl) do 
    print(v[1], ' == ', v[2]) 
end 

それが簡単にソートするために作られた道のデータを整理し、私だけではない、一度テーブルの要素ごとに、一度table.sortを呼び出すことに注意してください。サブテーブル内の2番目の値に基づいてソートします。これはあなたが望むものだと思います。