평면 배열에서 트리 배열 만들기 - 재귀

다음과 같이 재귀 방식으로 주석을 표시하는 과제를 받았습니다.



내가 서버에서 얻은 데이터는 평평했습니다. 즉, 다음을 의미합니다.
배열의 모든 항목은 다음과 같이 부모에 대한 참조를 보유합니다.

const entries = [
  {
    index: 1,
    parent: 0
  },
  {
    index: 2,
    parent: 1
  },
  {
    index: 3,
    parent: 2
  },
   ...
   ...
   ];


이 문제를 "공격"하는 방법을 생각한 후 깨달았습니다.
재귀 개체를 원하는 경우 가장 쉬운 솔루션은 재귀 개체입니다.

플랫 배열을 트리 배열로 변환하는 함수는 다음과 같습니다.

const arrayToTree = (arr, parent = 0) =>
  arr.filter(item => item.parent === parent)
     .map(child => ({ ...child, children: arrayToTree(arr, 
     child.index) }));


요약:
  • 먼저 root parent 의 하위 항목을 필터링합니다.
  • 그런 다음 방금 잡은 각 어린이에게 동일한 작업을 수행합니다
  • .

    스택 오버플로에 대한 질문에 대한 나의 대답



    솔루션의 데이터를 더 많이 사용하려는 경우 다음은 코드펜입니다.



    저에게 도움이 된 출처:
  • Styling Comment Threads
  • 좋은 웹페이지 즐겨찾기