将数组中的键重新分配为数字顺序?

时间:2013-02-04 03:59:35

标签: lua

我正在寻找一种方法来重新分配一个看起来像

的数组中的键
table = {
    [1] = "value1",
    [5] = "value2",
    [12] = "value3",
    [27] = "value4"

}

看起来像这样

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

}

1 个答案:

答案 0 :(得分: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

这应该打印出您期望的内容。

(不知道为什么对你的问题进行投票,因为这看起来像一个有趣的问题;虽然我在实践中很少看到这个;这是作业吗?;))