Объединение таблиц

TieXoP

Известный
Автор темы
133
27
Версия MoonLoader
Другое
Доброго времени суток.
Что-то затупил. Никак не могу дойти до сути. Вроде знаю как сделать, но все неудачно. Как бы не крутил
Lua:
t1 = {x=1,x=2,...x=n}
t2 = {y=1,y=2,...y=n}
t= {t1,t2}

-- Что-то в середине. Для работы)  Было бы супер, если б индексация элементов присутствовала

for k,v in pairs(t) do
 -- print выбранного элемента. К примеру t1[1] -- Важно
end
Заранее, спасибо!
 
Решение
KOd:
local t1 = {{x = 1}, {x = 2} , {x = 3}}
local t2 = {{y = 4}, {y = 5} , {y = 6}}

for i,v in pairs(t2) do
    table.insert(t1[t1[i].x], {y= v.y})
end
           
for i,v in pairs(t1) do
    print(v.x, t1[i][1].y)
end

Или вариант с созданием третьей объединяющей таблицей:
2Var:
t = {}
for i,v in pairs(t1) do
    table.insert(t, {x = v.x, y = t2[i].y})
end
        
for i,v in pairs(t) do
    print(v.x, v.y)
end

k0lenval

Известный
133
112
KOd:
local t1 = {{x = 1}, {x = 2} , {x = 3}}
local t2 = {{y = 4}, {y = 5} , {y = 6}}

for i,v in pairs(t2) do
    table.insert(t1[t1[i].x], {y= v.y})
end
           
for i,v in pairs(t1) do
    print(v.x, t1[i][1].y)
end

Или вариант с созданием третьей объединяющей таблицей:
2Var:
t = {}
for i,v in pairs(t1) do
    table.insert(t, {x = v.x, y = t2[i].y})
end
        
for i,v in pairs(t) do
    print(v.x, v.y)
end
 
Последнее редактирование:
  • Нравится
Реакции: TieXoP

TieXoP

Известный
Автор темы
133
27
KOd:
local t1 = {{x = 1}, {x = 2} , {x = 3}}
local t2 = {{y = 4}, {y = 5} , {y = 6}}

for i,v in pairs(t2) do
    table.insert(t1[t1[i].x], {y= v.y})
end
           
for i,v in pairs(t1) do
    print(v.x, t1[i][1].y)
end
Что-то я туплю под утро страшно. А в случае, если данные таблицы не приравнены к "х" и "y"?
То есть, таблицы состоят из {1,2,3}
 

k0lenval

Известный
133
112
Что-то я туплю под утро страшно. А в случае, если данные таблицы не приравнены к "х" и "y"?
То есть, таблицы состоят из {1,2,3}

Последовательно:
local t1 = {1,2,3}
local t2 = {4,5,6}

            for i = 1, #t1 do
                table.insert(t1, t2[i])
            end
          
            for i,v in pairs(t1) do
                print(v)
            end

Или вариант без table.insert::
local t1 = {1,2,3}
local t2 = {4,5,6,7,8}

for i = 1, #t2 do
    t1[i] = {x = t1[i],y = t2[i]}
end

for i,v in pairs(t1) do
    print(v.x,v.y)
end
 
Последнее редактирование:
  • Нравится
Реакции: TieXoP