使用 Lua 按时间戳比较两个表。

我正在尝试比较我创建的两个表。 第一个表总是新的,其中有两个或三个项目。

表格如下:

existingMTable = {}
local mTable = {}
local user = "me"

local function setupTable()
    local e = {}

    for i = 0, #totalusers do
        e.secSinceMyEvent = GetTimeSinceEvent(i)
        e.timestamp = GetTimeStamp(i)
        e.seller = GetUserNames(i)

        of e.seller = "me" then
        table.insert(mTable, e)
        valueExists(mTable, e.timestamp)
    end
end

local function valueExists(tbl, value)

    for k,v in pairs(tbl) do
        if value ~= v then
            table.insert(existingMTable.History, value)

           print("value" .. value)
           print("v" .. v)
           print(existingMTable.History.timestamp)
        end
    end

    return false
end

我正在过滤一个巨大的人员名单,我只需要1个用户的项目。 一旦我有了这几个项目,我想将其添加到他的销售历史记录中。

我需要通过时间戳将3个或3个以上的新项目与他的当前表进行比较。

点赞
用户869951
用户869951

你所做的事情没有意义,因为 valueExists 函数的第二个参数是 timestamp,这在 valueExists 中成为“值”,但在该函数中将是“e”类型的项目。如果按照你调用的方式重命名并更改一些名称使其一致,你将得到以下内容:

local function valueExists(tbl, timestamp)

    for k,e in ipairs(tbl) do
        if timestamp ~= e.timestamp then
            table.insert(existingMTable.History, e)

            print("value" .. timestamp)
            print("e.timestamp" .. e.timestamp)
            #print(existingMTable.History.timestamp) -- WRONG because you inserted an e two lines above here
        end
    end

    return false
end

现在你可以看到上面的内容没有意义:

  • 你将“e”表与时间戳值混合在一起。
  • 你以 setupTable 添加的最后一个“e”的时间戳调用函数,因此 valueExists 将查找表中最后一个具有所搜索时间戳的项目。

看看上面的内容:你在那个 valueExists 函数中实际上要做什么?

2014-04-17 12:22:01