首页 > 解决方案 > 根据Lua中的键对数组值进行分组?

问题描述

我有一个数组:

messages = {
    {
        id = 1,
        sender = 987654321,
        content = 'test message'
    },
    {
        id = 2,
        sender = 123456789,
        content = 'testowa wiadomość'
    },
    {
        id = 3,
        sender = 123456789,
        content = 'txd'
    }
}

我想根据“发件人”作为主键对数组中的元素进行分组。最终结果应如下所示:

messages = {
    {
        sender = 987654321,
        messages = {
            'test message'
        }
    },
    {
        sender = 123456789,
        messages = {
            'testowa wiadomość',
            'txd'
        }
    }
}

有人可以帮我解决这个问题吗?

标签: algorithmlua

解决方案


好的,我解决了这个问题:

function groupMessages(array)
    local result = {};
    for k, v in ipairs(array) do
        if not result[v.sender] then
            result[v.sender] = {};
        end

        table.insert(result[v.sender], v);
    end

   return result;
end

推荐阅读