如何在Lua中合并两个数组?附合并示例
如何在Lua中合并两个数组?
嘿,我来帮你搞定这个问题!根据你给出的示例,咱们需要把两个顺序数组拼接成一个新数组,下面给你几种实用的方法:
方法一:手动遍历拼接(最直观,适合所有Lua版本)
这是最容易理解的方式,直接遍历两个数组,把元素依次插入到新数组里:
local array1 = {2272, 2271, 2270, 2269} local array2 = {2267, 2266, 2268, 2265, 2264, 2263, 2262, 2261} local fusedArray = {} -- 先把array1的所有元素加入新数组 for _, value in ipairs(array1) do table.insert(fusedArray, value) end -- 再把array2的所有元素追加进去 for _, value in ipairs(array2) do table.insert(fusedArray, value) end -- 验证结果:输出合并后的数组 print(table.concat(fusedArray, ", "))
运行后fusedArray就完全符合你给出的示例结果啦。
方法二:用table.move高效拼接(Lua 5.3及以上版本)
如果你用的是Lua 5.3或更新的版本,table.move是更高效的选择——它可以批量移动元素,不用写循环,代码更简洁:
local array1 = {2292, 2291, 2290, 2289} local array2 = {2267, 2266, 2268, 2265, 2264, 2263, 2262, 2261} local fusedArray = {} -- 把array1的元素从索引1到末尾,复制到fusedArray的起始位置 table.move(array1, 1, #array1, 1, fusedArray) -- 把array2的元素追加到fusedArray的末尾(#fusedArray+1就是新的起始索引) table.move(array2, 1, #array2, #fusedArray + 1, fusedArray)
这种方法的性能比循环更好,尤其当数组很大的时候。
方法三:直接合并到原数组(如果不需要保留原array1)
如果你不需要保留原来的array1,可以直接把array2的元素追加到array1里,省掉创建新数组的步骤:
local array1 = {2272, 2271, 2270, 2269} local array2 = {2267, 2266, 2268, 2265, 2264, 2263, 2262, 2261} for _, value in ipairs(array2) do table.insert(array1, value) end -- 现在array1就是合并后的数组了
小提示
上面的方法都适用于顺序数组(也就是索引从1开始连续的数组,用ipairs可以遍历所有元素)。如果你的表带有非连续的索引或者键值对,那就要换成pairs遍历,但从你的示例来看,用ipairs完全没问题~
内容的提问来源于stack exchange,提问作者whiteblXK
相关产品推荐
相关产品推荐

