次のような配列でキーを再割り当てする方法を探しています
table = {
[1] = "value1",
[5] = "value2",
[12] = "value3",
[27] = "value4"
}
このように見えるように
table = {
[1] = "value1",
[2] = "value2",
[3] = "value3",
[4] = "value4"
}
次のような配列でキーを再割り当てする方法を探しています
table = {
[1] = "value1",
[5] = "value2",
[12] = "value3",
[27] = "value4"
}
このように見えるように
table = {
[1] = "value1",
[2] = "value2",
[3] = "value3",
[4] = "value4"
}
最初に配列にインデックスを設定し、次に並べ替えてから、インデックスをその値に置き換えて、必要な結果を取得します。
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
これにより、期待どおりに出力されるはずです。
(これは興味深い問題のように見えるため、質問に反対票を投じる理由がわかりません。実際にはこれをめったに見たことがありませんが、これは宿題ですか?;))