Значения группового массива на основе ключа в Lua? - PullRequest
1 голос
/ 04 октября 2019

У меня есть массив:

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

Я хочу сгруппировать элементы в массиве на основе 'sender' в качестве первичного ключа. Окончательный результат должен выглядеть следующим образом:

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

Может ли кто-нибудь помочь мне в этом, пожалуйста?

1 Ответ

0 голосов
/ 05 октября 2019

ОК, я решил эту проблему:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...