将大表解析为较小的表

时间:2016-01-06 02:41:27

标签: sorting lua lua-table

我试图拿一张包含众多嵌套表格的表格,然后根据某些Y坐标放置一个订单。对象类型值。我想拿这个"主人"表并首先在Y位置对它们进行排序,然后根据类型(文本或行)对其进行排序。

现在,我所能想到的就是放置两个表格,这些表格由Y轴上点200下方和下方的对象组成。从那以后,两个表被分成两个不同的对象类型;行和文字。

我似乎无法超越我的代码中的某个点,我对每个表都有相同的for循环。我这样做是为了保持从上到下的点#34;与每种类型的对象。理想情况下,我希望为我的表保持以下顺序(并希望放入更大的表中使用):

< 201为文本

< 201行

  

200 for text

     

200行

这是我目前所拥有的(其中objTable是我的主表,其中包含所有众多对象,其中每个对象都是自己的表):

local offset = 0
local upperObjTbl, lowerObjTbl, upperLineTbl, lowerLineTbl = {},{},{},{}
for objKey, object in pairs(objTable) do
    if tonumber(object.y) < 201 and object.object ~= "line" then
       offset = totalOffset + object.offset
       table.insert(lowerObjTbl, #lowerObjTbl + 1, object)
    end
end
for objKey, object in pairs(objTable) do
    if tonumber(object.y) < 201 and object.object == "line" then
       offset = totalOffset + object.offset
       table.insert(lowerObjTbl, #lowerObjTbl + 1, object)
    end
end         
for objKey, object in pairs(objTable) do
    if tonumber(object.y) > 200 and object.object ~= "line" then
       offset = totalOffset + object.offset
       table.insert(higherObjTbl, #higherObjTbl + 1, object)
    end
end
for objKey, object in pairs(objTable) do
    if tonumber(object.y) > 200 and object.object == "line" then
       offset = totalOffset + object.offset
       table.insert(higherObjTbl, #higherObjTbl + 1, object)
    end
end

理想情况下,我希望将其压缩成一个更好的for循环,无论它是什么类型的对象或它所在的Y轴位置,它都将它们放入Y轴的顺序首先(从最低到最高)和在行之前的文本。

0 个答案:

没有答案