Этот вопрос закрыт для ответов, так как повторяет вопрос Как превратить плоский массив в дерево?
gikami
@gikami
web программист

Как пересобрать одномерный массив категорий, подкатегорий и под подкатегорий в массив с вложенными категориями?

Есть массив:
[
  {
    "id": 1,
    "title": "Экипировка",
    "parent": null,
    "name": "equipment",
    "priority": 1,
    "status": 1,
    "paramId": 2
  },
  {
    "id": 4,
    "title": "Раса",
    "parent": null,
    "name": "race",
    "priority": 1,
    "status": 1,
    "paramId": 2
  },
  {
    "id": 5,
    "title": "Раса 1",
    "parent": 4,
    "name": null,
    "priority": 2,
    "status": 1,
    "paramId": 2
  },
  {
    "id": 3,
    "title": "Экипировка 3",
    "parent": 1,
    "name": null,
    "priority": 3,
    "status": 1,
    "paramId": 2
  },
  {
    "id": 9,
    "title": "j",
    "parent": 4,
    "name": "race",
    "priority": 1,
    "status": 1,
    "paramId": 2
  },
  {
    "id": 10,
    "title": "41",
    "parent": 1,
    "name": "equipment",
    "priority": 124,
    "status": 1,
    "paramId": 2
  }
]

В нем хранится массив со всеми категориями. Как пересобрать массив так, чтобы связанные подкатегории и под подкатегории были вложенные в связанные категории?
Проблема в том, что неизвестно сколько может быть подкатегорий и нужно делать проверку независимо, так как ветка может быть бесконечной.
Пример на выходе:
[
  {
    "id": 1,
    "title": "Экипировка",
    "parent": null,
    "name": "equipment",
    "priority": 1,
    "status": 1,
    "paramId": 2,
    "child": [
      {
        "id": 9,
        "title": "j",
        "parent": 1,
        "name": "race",
        "priority": 1,
        "status": 1,
        "paramId": 2,
        "child": [
          {
            "id": 9,
            "title": "j",
            "parent": 9,
            "name": "race",
            "priority": 1,
            "status": 1,
            "paramId": 2
          },
          //и.т.д
        ]
      }
    ]
  },
  {
    "id": 4,
    "title": "Раса",
    "parent": null,
    "name": "race",
    "priority": 1,
    "status": 1,
    "paramId": 2
  }
]
  • Вопрос задан
  • 87 просмотров
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы