Я хотел бы преобразовать плоскую сетку, описанную как массив элементов, имеющих координаты и размеры, в вложенную сетку, заполненную детьми, организованную в строки и столбцы.Как преобразовать плоскую сетку во вложенную сетку?
EDIT: В первой версии этого вопроса я использовал термин «матрица», чтобы говорить о сетке в ее плоском состоянии. Вероятно, это путано, реальная цель этого вопроса состояла в том, чтобы перейти от плоского к дереву. В любом случае, можно легко преобразовать матрицу в плоский массив, такой как тот, который я использую, чтобы преобразовать его в дерево.
Наличие плоской сетки, такие как:
var grid = [
{x:0,y:1,w:1,h:3,id:'f'},
{x:0,y:0,w:9,h:1,id:'e'},
{x:1,y:1,w:4,h:2,id:'a'},
{x:5,y:1,w:2,h:1,id:'b'},
{x:5,y:2,w:2,h:1,id:'c'},
{x:5,y:3,w:2,h:1,id:'h'},
{x:1,y:3,w:4,h:1,id:'g'},
{x:7,y:1,w:2,h:1,id:'i'},
{x:7,y:2,w:2,h:1,id:'j'},
{x:7,y:3,w:2,h:1,id:'k'},
];
Результат будет выглядеть так:
var grid = [
{
"w": 9,
"h": 4,
"children": [
{
"x": 0,
"y": 0,
"w": 9,
"h": 1,
"id": "e"
},
{
"w": 9,
"h": 3,
"children": [
{
"w": 8,
"h": 3,
"children": [
{
"w": 8,
"h": 1,
"children": [
{
"x": 7,
"y": 3,
"w": 2,
"h": 1,
"id": "k"
},
{
"x": 1,
"y": 3,
"w": 4,
"h": 1,
"id": "g"
},
{
"x": 5,
"y": 3,
"w": 2,
"h": 1,
"id": "h"
}
],
"x": 1,
"y": 3
},
{
"w": 8,
"h": 2,
"children": [
{
"w": 4,
"h": 2,
"children": [
{
"w": 4,
"h": 1,
"children": [
{
"x": 7,
"y": 2,
"w": 2,
"h": 1,
"id": "j"
},
{
"x": 5,
"y": 2,
"w": 2,
"h": 1,
"id": "c"
}
],
"x": 5,
"y": 2
},
{
"w": 4,
"h": 1,
"children": [
{
"x": 7,
"y": 1,
"w": 2,
"h": 1,
"id": "i"
},
{
"x": 5,
"y": 1,
"w": 2,
"h": 1,
"id": "b"
}
],
"x": 5,
"y": 1
}
],
"x": 5,
"y": 1
},
{
"x": 1,
"y": 1,
"w": 4,
"h": 2,
"id": "a"
}
],
"x": 1,
"y": 1
}
],
"x": 1,
"y": 1
},
{
"x": 0,
"y": 1,
"w": 1,
"h": 3,
"id": "f"
}
],
"x": 0,
"y": 1
}
],
"x": 0,
"y": 0
}
]
матрица образца, кажется, не соответствует выход. Как организованы столбцы и строки? – RobG
О, ты прав! Я редактировал массив результатов. Логика здесь заключается в том, что матрица должна быть преобразована в строки столбцов. Каждый столбец, содержащий несколько строк, должен быть разбит на строки и так далее ... – Jide
Очистить как грязь. ;-) Если вы предоставите образец матрицы и выберете put * из матрицы образцов *, вы можете получить ответ. – RobG