获取表格条目索引。
2016-10-15 22:39:57
收藏:0
阅读:239
评论:2
我无法获取表格的条目索引。我需要它来从表格中删除项目。
我使用 table.insert
将条目添加到表格中。
另一个问题: 为什么 Lua 没有重载函数 table.remove
,以便可以通过关联索引删除项目?
原文链接 https://stackoverflow.com/questions/2095669
点赞
stackoverflow用户68204
表实现了键和值之间的无序一对多关系。换句话说,任何特定的键(索引)在表中只能出现一次,但是一个值可以出现多次。
如果你知道键“k”,则“t[k] = nil”将从表中删除键和相关的值。然而,此操作对表中的任何其他键或值都没有影响。
“table.insert”和“table.remove”函数作用于从1开始的一组连续的整数键集合上,这些键通常用于实现数组或列表。为此,它们操纵列表中的其他值,以保持列表不会产生空洞。
找到某个值所在的键的一种方法是简单地搜索表。如果这样做不止一次,那么建立一个第二个表反转键/值对可能是一个不错的主意,以便查找值和查找索引一样快。
合适的实现将取决于您的假设和需求。以下是一些示例:
— 返回包含值的第一个整数索引
function AnIndexOf(t,val)
for k,v in ipairs(t) do
if v == val then return k end
end
end
— 返回包含值的任何一个键
function AKeyOf(t,val)
for k,v in pairs(t) do
if v == val then return k end
end
end
— 返回包含值的所有键
function AllKeysOf(t,val)
local s={}
for k,v in pairs(t) do
if v == val then s[#s+1] = k end
end
return s
end
— 反转一个表,使每个值成为原始表中一个键到该值的键。
function Invert(t)
local i={}
for k,v in pairs(t) do
i[v] = k
end
return i
end
2010-01-19 23:31:56
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
对于第二个问题,答案是:表可以拥有独立的元表。
t[k]=nil
从表t
中移除键为k
的条目。