1

次のような配列でキーを再割り当てする方法を探しています

table = {
    [1] = "value1",
    [5] = "value2",
    [12] = "value3",
    [27] = "value4"

}

このように見えるように

table = {
    [1] = "value1",
    [2] = "value2",
    [3] = "value3",
    [4] = "value4"

}

4

1 に答える 1

2

最初に配列にインデックスを設定し、次に並べ替えてから、インデックスをその値に置き換えて、必要な結果を取得します。

local t = {
  [1] = "value1",
  [5] = "value2",
  [12] = "value3",
  [27] = "value4"
}
local tupd = {}
for k in pairs(t) do table.insert(tupd, k) end -- populate
table.sort(tupd) -- sort
for k, v in ipairs(tupd) do tupd[k] = t[v] end -- replace

for k, v in ipairs(tupd) do print(k, v) end -- show

これにより、期待どおりに出力されるはずです。

(これは興味深い問題のように見えるため、質問に反対票を投じる理由がわかりません。実際にはこれをめったに見たことがありませんが、これは宿題ですか?;))

于 2013-02-04T04:52:44.593 に答える