Как сравнить таблицы и вывести найденные значения

nbque

Новичок
Автор темы
2
0
Lua:
for dialogLine in string.gmatch(Dtext, '[^\n]+') do
    if string.match(dialogLine, '(%w+_%w+)\t+(%d+)') then
         local _name, _value = string.match(dialogLine, '(%w+_%w+)\t+(%d+)')
         pl[#pl + 1] = {
           name = _name,
           value = _value
         }
    end
end

Lua:
for dialogLine in string.gmatch(Dtext, '[^\n]+') do
    if string.match(dialogLine, '.+%[%d+%] (%w+_%w+).+') then
          local _name = string.match(dialogLine, '.+%[%d+%] (%w+_%w+).+')
          me[#me + 1] = {
              name = _mname
         }
    end
end

В первом поиске я получаю *ник = значение*, во-втором только *ник* и заношу это в 2 таблицы. Как можно сравнить их? И если в *pl* находятся ники из *me*, то вывести эти данные - *ник = значение*. С луа на Вы.
 
Последнее редактирование модератором:

CaJlaT

Овощ
Модератор
2,806
2,609
Для кого функции в сниппеты кидал?
Lua:
function getTableByValue(t, val, key)
    for k, v in pairs(t) do
        if key and k == key and v == val then return t end
        if type(v) == 'table' then
            local test = getTableByValue(v, val, key)
            if test then return test end
        elseif not key and v == val then
            return t
        end
    end
    return false
end

local pl = {
    {nick = 'Abobus', value = 0},
    {nick = 'debil', value = 1}
}
local me = {
    {nick = 'debil'},
    {nick = 'dadaya'}
}

for i, v in ipairs(me) do
    local tbl = getTableByValue(pl, v.nick) -- или getTableByValue(pl, v.nick, 'nick'), если ты хочешь, чтобы искало только по названию переменной
    if tbl then
        print(tbl.nick, tbl.value)
    else
        print(v.nick..' value not found!')
    end
end
1675803592196.png

На будущее, для вопросов есть отдельная тема
И отдельный форум
 
  • Нравится
Реакции: why ega