@beta-it

Как правильно сделать дерево из плоского массива?

Есть такая структура данных, от сервера:
Данные идут по порядку, type: 0 это группа далее по списку идут значения этой группы(type: 1)
Test = [
{id: 1, type: 0, name: 'Группа 1'},
{id: 2, type: 1, name: 'Элемент группы 1'},
{id: 3, type: 1, name: 'Элемент группы 1'},
{id: 4, type: 1, name: 'Элемент группы 1'},
{id: 5, type: 0, name: 'Группа 2'},
{id: 6, type: 1, name: 'Элемент группы 2'},
{id: 7, type: 1, name: 'Элемент группы 2'},
{id: 8, type: 0, name: 'Группа 3'},
{id: 9, type: 1, name: 'Элемент группы 3'},
];


Непосредственно в Angular пытаюсь сделать из этой структуры дерево:
Интерфейс:
export interface ITest {
	id: number;
        type: number;
	name: string;
	childrens?: ITest[];
}


И непосредственно функция которая формирует дерево:
genForm(data: ITest[]) {
    const test: ITest[] = [];
    let index = 0;
    data.forEach((d, i) => {

      if (d.type === 0) {
        index = i;
        test[index] = d;
        test[index].childrens = [];
      }
      if (d.type === 1) {
           test[index].childrens[i] = d;
        }
      }
    });
    console.log(test);
  }


Собственно в целом выводит все как надо, но терминал сыпятся ошибка вида: error TS2532: Object is possibly 'undefined'.

Вопрос: как это победить или как-то по другому строить дерево?
  • Вопрос задан
  • 176 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
summer Ярославль
от 100 000 до 140 000 ₽
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
19 апр. 2024, в 14:12
30000 руб./за проект
19 апр. 2024, в 14:10
500 руб./за проект