如何快速判断Lua表中索引是否全为连续数字序列?
- 内容介绍
- 文章标签
- 相关推荐
本文共计306个文字,预计阅读时间需要2分钟。
如何编写一个函数来判断一个参数是否为数组?以下是一个示例:
javascriptfunction isArray(param) { return Array.isArray(param);}
console.log(isArray([1, 2, 4, 8, 16])); // trueconsole.log(isArray([1, two, 3, 4, 5])); // trueconsole.log(isArray([1, [3]=two, [2]=3, 4, 5])); // trueconsole.log(isArray([1, dictionaryKey=not an array, 3, 4, 5])); // false
如何编写一个函数来确定它的表参数是否为真数组?isArray({1, 2, 4, 8, 16}) -> true isArray({1, "two", 3, 4, 5}) -> true isArray({1, [3]="two", [2]=3, 4, 5}) -> true isArray({1, dictionaryKey = "not an array", 3, 4, 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计算减少到简单的函数调用.
本文共计306个文字,预计阅读时间需要2分钟。
如何编写一个函数来判断一个参数是否为数组?以下是一个示例:
javascriptfunction isArray(param) { return Array.isArray(param);}
console.log(isArray([1, 2, 4, 8, 16])); // trueconsole.log(isArray([1, two, 3, 4, 5])); // trueconsole.log(isArray([1, [3]=two, [2]=3, 4, 5])); // trueconsole.log(isArray([1, dictionaryKey=not an array, 3, 4, 5])); // false
如何编写一个函数来确定它的表参数是否为真数组?isArray({1, 2, 4, 8, 16}) -> true isArray({1, "two", 3, 4, 5}) -> true isArray({1, [3]="two", [2]=3, 4, 5}) -> true isArray({1, dictionaryKey = "not an array", 3, 4, 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计算减少到简单的函数调用.

