Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua 将数组中的键重新指定为数字顺序?_Lua - Fatal编程技术网

Lua 将数组中的键重新指定为数字顺序?

Lua 将数组中的键重新指定为数字顺序?,lua,Lua,我正在寻找一种在数组中重新分配键的方法 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
这应该打印出您所期望的内容

(不确定为什么对你的问题投了反对票,因为这看起来是一个有趣的问题;尽管我在实践中很少看到这一点;这是家庭作业吗?;)