Итак, я создал функцию, которая создает хеш %data
, который выглядит следующим образом:
{
'10517' => {
'parent' => '10516',
'start' => 1545321095,
'end' => 1545321098,
'name' => 'A'
},
'10515' => {
'parent' => '10513',
'start' => 1545321091,
'end' => 1545321095,
'name' => 'B'
},
'10514' => {
'parent' => '10513',
'start' => 1545321091,
'end' => 1545321095,
'name' => 'C'
},
'10516' => {
'parent' => '10513',
'start' => 1545321091,
'end' => 1545321095,
'name' => 'D',
},
'10511' => {
'parent' => '#####',
'start' => 1545321090,
'end' => 1545321099,
'name' => 'E'
},
'10513' => {
'parent' => '10511',
'start' => 1545321091
'end' => 1545321097
'name' => 'F'
},
'10518' => {
'parent' => '10516',
'start' => 1545321094,
'end' => 1545321098,
'name' => 'G',
},
'10519' => {
'parent' => '10517',
'start' => 1545321096,
'end' => 1545321097,
'name' => 'H',
}
}
Я хотел бы создать функцию, которая преобразует данные в следующий вывод:
{
'children' : [
{
'id' : 10511,
'start' : 1545321090,
'end' : 1545321099,
'name' : 'E'
'children' : [
{
'id' : 10513,
'start' : 1545321091,
'end' : 1545321097,
'name' : 'F'
'children' : [
{
'id' : 10516,
'start' : 1545321091,
'end' : 1545321095,
'name' : 'D'
},
{
'id' : 10514,
'start' : 1545321091,
'end' : 1545321095,
'name' : 'C'
},
{
'id' : 10515,
'start' : 1545321091,
'end' : 1545321095,
'name' : 'B'
},
{
'id' : '10517',
'start' : 1545321095,
'end' : 1545321098,
'name' : 'A'
}
]
}
]
}
],
}
Это не полностью ожидаемые данные (это означает, что мне было лень добавлять другие ids
во вложенный формат).
Я хотел бы преобразовать хэш %data
, чтобы он содержалдревовидный формат, как показано в примере.Конечная цель состоит в том, чтобы иметь вложенные данные, чтобы каждый родительский элемент хэшировал массив каждого дочернего элемента, и каждый из этих дочерних элементов имеет массив своих собственных дочерних элементов (если они, конечно, есть) и т. Д.
Как мне решить эту проблему?Я ищу самый чистый и самый эффективный способ из всех возможных.Также по возможности без каких-либо дополнительных модулей.