加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

数组 – 如何检查lua表是否只包含连续数字索引?

发布时间:2020-12-15 00:25:25 所属栏目:大数据 来源:网络整理
导读:如何编写一个函数来确定它的表参数是否为真数组? isArray({1,2,4,8,16}) - trueisArray({1,"two",3,5}) - trueisArray({1,[3]="two",[2]=3,dictionaryKey = "not an array",5}) - false 我看不出有什么方法可以找出数字键是否是唯一的键. 解决方法 ipairs迭
如何编写一个函数来确定它的表参数是否为真数组?
isArray({1,2,4,8,16}) -> true
isArray({1,"two",3,5}) -> true
isArray({1,[3]="two",[2]=3,dictionaryKey = "not an array",5}) -> false

我看不出有什么方法可以找出数字键是否是唯一的键.

解决方法

ipairs迭代索引1..n,其中n 1是第一个具有nil值的整数索引
对遍历所有键.
如果有多个键而不是顺序索引,则它不能是一个数组.

所以你要做的就是看看成对的元素数量(表格)是否等于ipairs中的元素数量(表格)
代码可以写成如下:

function isArray(tbl)
    local numKeys = 0
    for _,_ in pairs(tbl) do
        numKeys = numKeys+1
    end
    local numIndices = 0
    for _,_ in ipairs(tbl) do
        numIndices = numIndices+1
    end
    return numKeys == numIndices
end

我对Lua很新,所以可能有一些内置函数可以将numKeys和numIndices计算减少到简单的函数调用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读