我正在寻找一种方法来重新分配数组中的键,看起来像
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
这应该打印您所期望的。
(不知道为什么对你的问题投反对票,因为这看起来是一个有趣的问题;虽然我在实践中很少看到这一点;这是作业吗?;))