Рекурсивно построить JSON до n-го уровня для древовидного представления с помощью операторов RXJS

Я пытаюсь построить древовидное представление n-уровня с помощью rxjs. Я достиг того же самого с простым JavaScript. Найти код JS здесь

var x = [{"id":1,"name":"Admin","parentDepartmentId":null},{"id":2,"name":"Development","parentDepartmentId":1},{"id":3,"name":"Research and Development","parentDepartmentId":1},{"id":4,"name":"FE","parentDepartmentId":2},{"id":5,"name":"BE","parentDepartmentId":2},{"id":6,"name":"Testing","parentDepartmentId":1},{"id":7,"name":"Unit Test","parentDepartmentId":6},{"id":8,"name":"Integration Test","parentDepartmentId":6},{"id":9,"name":"HR","parentDepartmentId":null}];

function getRecords(parents) {
    parents.forEach((parent) => {
      var result = getChildData(parent);
      parent.items = result;
      if (result.length > 0) {
        getRecords(result);
      }
    })
  return parents;
}
  
function getChildData(parent) {
    return x.filter(record => record.parentDepartmentId == parent.id)
}

function getParents(x){
    return  x.filter(record => record.parentDepartmentId == null);
}

var parents = getParents(x)
var result = getRecords(parents);
console.log(result);

Может кто-то показать некоторые огни на этом.

1 ответ

Вот что я мог бы сгенерировать из https://jvilk.com/MakeTypes/. Возможно, вы захотите немного его очистить, например, если заставить Data и Data1 использовать один и тот же класс, сделайте isNode необязательным. Конвертер может пригодиться, когда вам придется много чего делать.

    Also you may want to make these as class instead of interface if what you want is class.

   export interface Weather {
  id: number;
  name: string;
  parentDepartmentId?: null;
  items?: (ItemsEntity | null)[] | null;
}
export interface ItemsEntity {
  id: number;
  name: string;
  parentDepartmentId: number;
  items?: (ItemsEntity1 | null)[] | null;
}
export interface ItemsEntity1 {
  id: number;
  name: string;
  parentDepartmentId: number;
  items?: (null)[] | null;
}
Другие вопросы по тегам