2

私はそれを動作させることができません:

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値を比較してみてください

これは、luaでのテーブル値の並べ替えの続きです

4

1 に答える 1

7

これはどう?

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ます。また、テーブルの要素ごとに1回ではなく、1回だけ呼び出すことに注意してください。そして、サブテーブルの2番目の値に基づいて並べ替えます。これは、あなたが望んでいたものだと思います。

于 2011-07-17T19:50:13.183 に答える