首页 > 代码库 > (原创) cocos2d-x 3.0+ lua 学习和工作(4) : 公共函数(7): 其他table方法
(原创) cocos2d-x 3.0+ lua 学习和工作(4) : 公共函数(7): 其他table方法
看了下其他的table方法,好像没有什么好说的,注释里已经写的很明白了,这里就不罗嗦了~(小白:懒。。。)。参考资料为quick_cocos.
星月倾心贡献~~~
--[[-- 返回指定表格中的所有值(value)-- example local t = { a = 1, b = 2, c = 3 } local values = table.values( t ) -- values = { 1, 2, 3 } -- @parame t 要检查的表格(t表示是table)-- @parame table 返回指定表格的所有值,它是一个值集合的表格--]]function table.values( t ) local values = {} for _, v in pairs( t ) do values[#values + 1] = v end return valuesend--[[-- 在 目标表格 的指定位置插入 来源表格,如果没有指定位置则连接两个表格-- example local tDest = { 1, 2, 3 } local tSrc = { 4, 5, 6 } table.insertTo( tDest, tSrc ) -- tDest = { 1, 2, 3, 4, 5, 6 } tDest = { 1, 2, 3 } table.insertTo( tDest, tSrc, 5 ) -- tDest = { 1, 2, 3, nil, 4, 5, 6} -- @param tDest 目标表格(t表示是table)-- @param tSrc 来源表格(t表示是table)-- @param iBegin 插入位置(i表示是integer)--]]function table.insertTo( tDest, tSrc, iBegin ) begin = checkInt( iBegin ) if begin <= 0 then begin = #tDest + 1 end local len = #tSrc for i = 0, len - 1 do tDest[i + begin] = tSrc[i+1] endend--[[-- 在表格中查找指定值,返回其索引,查找失败则返回false-- example local t = { "a", "b", "c" } table.indexOf( t, "b" ) -- 输出 2 -- @param t 表格(t表示是table)-- @param value 要查找的值-- @param iBegin 起始索引值(i表示是integer)-- @return integer 返回对应的索引 如:5--]]function table.indexOf( t, value, iBegin ) for i = iBegin or 1, #t do if t[i] == value then return i end end return falseend--[[-- 在表格中查找指定值,返回其key,查找失败则返回nil-- example local t = { name = "a", name2 = "b", name3 = "c" } table.keyOf( t, "b" ) -- 输出 name3-- @param t 表格(t表示是table)-- @param value 要查找的值-- @return string 返回对应的 key 如:"name"--]]function table.keyOf( t, value ) for k, v in pairs( t ) do if v == value then return k end end return nilend--[[-- 从表格中删除指定值,返回删除的值的个数-- example local t = { "a", "b", "c", "c" } table.removeByValue( t, "c", true ) -- 输出 2 -- @param t 表格(t表示是table)-- @param value 要删除的值-- @param bRemoveAll 是否删除所有相同值(b表示是booleam)-- @return integer 返回删除的值的个数--]]function table.removeByValue( t, value, bRemoveAll ) local c, i, max = 0, 1, #t while i <= max do if t[i] == value then table.remove( t, i ) c = c + 1 i = i - 1 max = max - 1 if not bRemoveAll then break end end i = i + 1 end return cend--[[-- 对表格中每一个值执行一次指定的函数,并用函数返回值更新表格内容-- example local t = { name = "dualface", comp = "chukong" } table.map( t, function( v, k ) -- 在每个值前后添加括号 return "(" .. v .. ")" end ) -- 输出修改后的表格内容 for k, v in pairs( t ) do print( k, v ) end -- 输出 -- name (dualface) -- comp (chukong) fn 参数指定的函数具有两个参数,并且返回一个值。原型如下: function map_function(value, key) return value end -- @param t (t表示是table)-- @param fn 函数--]]function table.map( t, fn ) for k, v in pairs( t ) do t[k] = fn( v, k ) endend--[[-- 对表格中每一个值执行一次指定的函数,但不更新表格内容-- example local t = { name = "dualface", comp = "chukong" } table.walk( t, function( v, k ) -- 输出每一个值 print( v ) end ) fn 参数指定的函数具有两个参数,并且返回一个值。原型如下: function map_function(value, key) end-- @param t 表格(t表示是table)-- @param fn 函数--]]function table.walk( t, fn ) for k, v in pairs( t ) do fn( v, k ) endend--[[-- 对表格中每一个值执行一次指定的函数,如果该函数返回false,则对应的值会从表格中删除-- example local t = { name = "dualface", comp = "chukong" } table.filter( t, function( v, k ) return v ~= "dualface" -- 当值等于 dualface 时,过滤掉该值 end ) -- 输出过滤后的表格内容 -- comp chukong fn 参数指定的函数具有两个参数,并且返回一个 boolean 值。原型如下: function map_function(value, key) return true or false end -- @param t 表格(t表示是table)-- @param fn 函数--]]function table.filter( t, fn ) for k, v in pairs( t ) do if not fn( v, k ) then t[k] = nil end endend--[[-- 遍历表格,确保其中的值唯一-- example local t = { "a", "a", "b", "c" } local n = table.unique( t ) -- n = { "a", "b", "c" } == 重复的 a 被过滤掉 -- @param t 表格(t表示是table)-- @return table 返回 包含所有唯一值的 表格--]]function table.unique( t ) local check = {} local n = {} for k, v in pairs( t ) do if not check[v] then n[k] = v check[v] = true end end return nend
作者使用 cocos2d-x 3.0 + lua学习和工作心得,未经作者允许,请勿转载!在此谢谢各位手下留情~~~
本文没有获得作者本人同意,不得转载,否则必追究相关责任。转载请注明出处!!~~
原文地址:http://www.cnblogs.com/wodehao0808/p/4029500.html
(原创) cocos2d-x 3.0+ lua 学习和工作(4) : 公共函数(7): 其他table方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。