【Lua】table表删除指定元素 (转)

在对表做删除操作时,发现table.remove(table,idx)这个方法是根据table中的索引进行删除操作,而现在的需求是根据value值进行删除操作,在quick-x中也有相应的table方法封装:

1.根据table中的value值进行删除操作

--    table中删除指定元素(非根据索引)
--    @param    array 要操作的容器
--    @param     value 删除value值
--     @param    removeadll 是否删除所有相同的值
--    @return 返回删除值的个数
function removebyvalue(array, value, removeadll)
    --    deleteNum用于接收/返回删除个数; i/max 构成控制while循环
    local deleteNum,i,max=0,1,#array
    while i<=max do
        if array[i] == value then
            --    通过索引操作表的删除元素
            table.remove(array,i)
            --    标记删除次数
            deleteNum = deleteNum+1 
            i = i-1
            --    控制while循环操作
            max = max-1
            --    判断是否删除所有相同的value值
            if not removeadll then break end
        end
        i= i+1
    end
    --    返回删除次数
    return deleteNum
end
原文地址:https://www.cnblogs.com/Liyang1992/p/4025283.html