lua table相关

1. table.insert(table,[pos,],value) 插入元素

在table数组指定pos位置插入值为value的元素,pos参数可选,默认为数组部分末尾

local a = {1,3,4}
-- 方式1: 添加指定位置,其它元素依次后移
table.insert(a,2,2)
local str = table.concat(a,",")
print(str)   -- 输出:1,2,3,4      
-- 方式2: 不指定位置,会默认插入到最后,不移动其他元素 table.insert(a,5) local str = table.concat(a,",") print(str) -- 输出:1,2,3,4,5

2. table.remove(table,[,pos]) 删除元素

在table数组指定的pos位置删除元素,pos参数可选,默认为table长度,即最后一个元素位置

local a = {1,2,3,4,5}
-- 方式1: 删除指定位置元素,其它元素往前移。参数:数组,key
table.remove(a,2)
local str = table.concat(a,",")
print(str) --输出:1,3,4,5
-- 方式2:删除最后元素。参数:数组
table.remove(a)
local str = table.concat(a,",")
print(str) -- 输出:1,3,4

3. table.concat(table,sep,start,end) 连接元素

在table中,使用sep分割符,从start到end位置的元素,若end元素为空,则默认最后,若start为空的话,end也为空。默认全部元素。

local a = {1,2,3,4}
print(table.concat(a,"|"))         -- 1|2|3|4
print(table.concat(a,"-",2))       -- 2-3-4
print(table.concat(a,"-",2,3))     -- 2-3

4. table.maxn(table) 

返回table中所有正数key值中最大的key值,如果不存在正数的key值,返回0。在Lua 5.2中该方法已经不存在了。

local a = {[-2] = -2, [-1] = -1}
print(table.maxn(a))         -- 0
local a = {[1] = 1, [2] = 2, [1000] = 1000}
print(table.maxn(a))         -- 1000

5. table.sort(table,[,comp]) ,对table进行排序,默认为升序

local a = {1,3,5,7,2}
-- 不指定为升序
table.sort(a)
print(table.concat(a,","))
-- 输出:1,2,3,5,7

-- 指定方法 local b = {1,3,5,7,2} table.sort(b,function(num1,num2) return num1 > num2 end) print(table.concat(b,",")) -- 输出:7,5,3,2,1

 如下的方法,需要借助于cocos lua项目中的../cocos/cocos2d/functions.lua:

6. table.keys(table) 获取表所有key值

function table.keys(hashtable)
    local keys = {}
    for k, v in pairs(hashtable) do
        keys[#keys + 1] = k
    end
    return keys
end

local a = {one=1, two=2, three=3, [4] = 4}
print(table.concat(table.keys(a), ","))
-- 输出:one,three,4,two

7. table.values(table) 获取表所有的values值

function table.values(hashtable)
    local values = {}
    for k, v in pairs(hashtable) do
        values[#values + 1] = v
    end
    return values
end

local a = {one=1, two=2, three=3, [4] = 4}
print(table.concat(table.values(a), ","))
-- 输出: 1,3,4,2

8. table.merge(tab1,tab2) 将tab2合并到tab1中

function table.merge(dest, src)
    for k, v in pairs(src) do
        dest[k] = v
    end
end

local a = {one=1, two=2,three=3}
local b = {four=4, five=5}
table.merge(a,b)
for i,v in pairs(a) do
    print(i,v)
end
--[[
two        2
three      3
one        1
five       5
four       4
]]

-- 注意该合并存在一个问题
local a = {one=1, two=2,three=3}
local b = {one = 4, five=5}
table.merge(a,b)
for i,v in pairs(a) do
    print(i,v)
end
--[[
one        4         -- 原有的值由于key值相同,会被替换
three      3
five       5
two        2
]]

9. table.indexof(table,value,begin) 从begin位置(默认1)判定value是否存在table表中,若是返回key值,否则返回false

function table.indexof(array, value, begin)
    for i = begin or 1, #array do
        if array[i] == value then return i end
    end
    return false
end

local tab = {[1]=1,[2]=2,[3]=3}
print(table.indexof(tab,2))        -- 查找value:2,输出:2
print(table.indexof(tab,4))        -- 查找value:4, 输出:false
print(table.indexof(tab,3,2))      -- 查找value:2, 从位置2开始,输出:3

 

转载于:https://www.cnblogs.com/SkyflyBird/p/9867838.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值