lua table遍历和删除

 遍历

在 Lua 中,pairsipairs 都是用于遍历表(table)的迭代器函数,但它们的行为和使用场景有所不同。

pairs

  • 用途pairs 用于遍历表中的所有键值对,但它的遍历顺序并不是基于键的数值顺序,而是基于键的插入顺序和哈希部分的内部顺序。

    pairs 的行为可以分为两个阶段:

             整数键部分:首先遍历从 1 开始的连续整数键。

            哈希部分:然后遍历其他类型的键(包括非连续的整数键和其他类型如字符串、表等)。 

  • 行为pairs 会遍历表中的所有元素,无论键是整数还是其他类型。它按照键的插入顺序进行遍历。
  • 返回值pairs 返回三个值:迭代器函数、表本身和控制变量

 ipairs

  • 用途ipairs 用于遍历表中的整数键值对,并且只遍历从 1 开始的连续整数键。
  • 行为ipairs 只会遍历从 1 开始的连续整数键,直到遇到第一个空槽或非整数键为止。
  • 返回值ipairs 返回三个值:迭代器函数、表本身和控制变量。

示例代码

-- 使用 pairs 遍历表
local t1 = {10, 20, 30, key = "value", [5] = 50}

for k, v in pairs(t1) do
    print(k, v)
end
-- 输出:
-- 1   10
-- 2   20
-- 3   30
-- 5   50
-- key value

-- 使用 ipairs 遍历表
local t2 = {10, 20, 30, 40, 50}

for i, v in ipairs(t2) do
    print(i, v)
end
-- 输出:
-- 1   10
-- 2   20
-- 3   30
-- 4   40
-- 5   50

-- 注意: 如果表中有非连续的整数键或非整数键,ipairs 会在第一个不连续的地方停止
local t3 = {10, 20, 30, [5] = 50, key = "value"}

for i, v in ipairs(t3) do
    print(i, v)
end
-- 输出:
-- 1   10
-- 2   20
-- 3   30

-- 如果表中没有从 1 开始的连续整数键,ipairs 不会遍历任何元素
local t4 = {[2] = 20, [3] = 30}

for i, v in ipairs(t4) do
    print(i, v)
end
-- 没有输出

总结

  • pairs 适用于遍历表中的所有键值对,无论是整数键还是其他类型的键。
  • ipairs 适用于遍历表中从 1 开始的连续整数键,通常用于数组类型的表。

选择使用 pairs 还是 ipairs 取决于你的具体需求。如果你需要遍历表中的所有元素,包括非整数键,使用 pairs。如果你只需要遍历从 1 开始的连续整数键,使用 ipairs

删除

pairs

ipairs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

無限進步的全棧遊戲開發

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值