You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:49:15