如何编写一个函数来确定它的表参数是否为真数组?
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