JavaScript의 평면 배열에서 계층 트리 구축
JavaScript에서는 평면 배열을 변환해야 하는 상황이 있습니다. 계층 구조를 중첩된 트리 구조로 나타내는 개체입니다. 제공된 예와 같이 복잡한 JSON 데이터로 작업할 때 이러한 문제가 발생할 수 있습니다.
트리 구조를 구축하기 위해 맵 기반 접근 방식을 활용합니다. 이 방법은 효율적이며 여러 루트 노드를 지원합니다. 평면 배열에서 상위 노드가 하위 노드보다 앞에 있어야 합니다.
JavaScript에서 이를 구현하는 방법은 다음과 같습니다.
function list_to_tree(list) { var map = {}, node, roots = [], i; for (i = 0; i < list.length; i += 1) { map[list[i].id] = i; // initialize the map list[i].children = []; // initialize the children } for (i = 0; i < list.length; i += 1) { node = list[i]; if (node.parentId !== "0") { // if you have dangling branches check that map[node.parentId] exists list[map[node.parentId]].children.push(node); } else { roots.push(node); } } return roots; } var entries = //Your flat array of entries console.log(list_to_tree(entries));
이 솔루션은 각 노드의 인덱스를 저장하는 맵 맵을 초기화합니다. ID, 빠른 조회를 보장합니다. 그런 다음 목록을 두 번 반복합니다. 첫 번째 단계에서는 각 노드의 하위 속성을 빈 배열로 초기화합니다. 두 번째 패스에서는 맵의 데이터를 사용하여 노드를 해당 상위 노드에 연결하여 트리 구조를 구축합니다. 노드의 parentId가 "0"인 경우 루트 노드로 간주되어 루트 배열에 추가됩니다. 마지막으로 list_to_tree 함수는 루트 노드 배열을 반환합니다.
위 내용은 JavaScript의 평면 배열에서 계층 트리를 효율적으로 구축하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!