【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

 

你可能感兴趣的:(table)