У меня есть плоский массив объектов, из которых я пытаюсь сгенерировать дерево. Первоначально данные не сортируются и представляют собой данные категории продуктов, полученные из API онлайнового рынка, который состоит из около 5000 наименований.
Небольшая часть данных выглядит следующим образом.
"@deepest": "false",
"categoryCode": "1",
"categoryName": "Pet products"
},
{
"@deepest": "false",
"categoryCode": "1b",
"categoryName": "Bird"
},
{
"@deepest": "true",
"categoryCode": "1ba",
"categoryName": "Bird Accessories"
},
{
"@deepest": "true",
"categoryCode": "1bb",
"categoryName": "Bird care products"
},
{
"@deepest": "true",
"categoryCode": "1bc",
"categoryName": "Bird Cage"
}
]
Кажется, что тренд внутри данных идет в виде categoryCode с одним символом, являющимся верхними категориями. Глядя на частичные данные, можно увидеть, что categoryCode 1 - что составляет Pet Products - имеет дочерний элемент с categoryCode 1b и детей 1bb и 1b c и т. Д.
Итак, исходя из этого отношения, я хочу создать дерево объектов выглядит следующим образом:
[
{
"@deepest": "false",
"categoryCode": "1",
"categoryName": "Pet products",
"children": [
{
"@deepest": "false",
"categoryCode": "1b",
"categoryName": "Bird",
"children": [
{
"@deepest": "true",
"categoryCode": "1ba",
"categoryName": "Bird Accessories"
},
{
"@deepest": "true",
"categoryCode": "1bb",
"categoryName": "Bird care products"
},
{
"@deepest": "true",
"categoryCode": "1bc",
"categoryName": "Bird Cage"
}
]
}
]
}
]
Каков наиболее оптимальный способ достижения желаемого результата без проблем с производительностью?
Примечание: было предпринято несколько попыток без solid результата, но разочарования.