重新分配数组中的键,使其按数字顺序排列?

我正在寻找一种方法来重新指定类似于以下数组中的键:

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

}

使其看起来像这样

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

}

点赞
用户1442917
用户1442917

首先用您的索引填充数组,然后对其进行排序,然后替换索引为它们的值,以获得所需的结果:

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

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

这应该打印出您期望的结果。

(不确定为什么您的问题会被踩,因为这似乎是一个有趣的问题;虽然我很少在实践中看到这个问题;这是一个作业吗?;))

2013-02-04 04:52:44