Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript의 JSON에서 트리 배열 빌드

<시간/>

JavaScript에 다음과 같은 배열이 있다고 가정해 보겠습니다.

const arr =[{ "코드":"2", "이름":"보류 중"},{ "코드":"2.2", "이름":"보류 중인 자식"},{ "코드":" 2.2.01.01", "이름":" 보류 중인 어린이 어린이"},{ "코드":"2.2.01.02", "이름":" 보류 중인 어린이 어린이02"},{ "코드":"1", "이름" :"활성"},{ "코드":"1.1", "이름":"활성 어린이"},{ "코드":"1.1.01", "이름":"활성 어린이 어린이"}]; 

그러한 배열을 취하는 JavaScript 함수를 작성해야 합니다. 함수는 개체의 "이름" 속성을 기반으로 이 배열에서 트리 구조를 만들어야 합니다.

따라서 위 배열의 경우 출력은 다음과 같아야 합니다. -

const 출력 =[{ "code":"2", "name":"PENDING", "children":[{ "code":"2.2", "name":"PENDING CHILDREN", "children" :[{ "코드":"2.2.01.01", "이름":"보류 중인 어린이 어린이" }, { "코드":"2.2.01.02", "이름":"보류 중인 어린이 어린이 02" }] }]}, { "코드":"1", "이름":"활성", "자식":[{ "코드":"1.1", "이름":"활성 아동", "자식":[{ "코드":"1.1.01", "이름":"활성 어린이 어린이" }] }]}];

예시

이에 대한 코드는 -

const arr =[{ "코드":"2", "이름":"보류 중"},{ "코드":"2.2", "이름":"보류 중인 자식"},{ "코드":" 2.2.01.01", "이름":" 보류 중인 어린이 어린이"},{ "코드":"2.2.01.02", "이름":" 보류 중인 어린이 어린이02"},{ "코드":"1", "이름" :"ACTIVE"},{ "code":"1.1", "name":"ACTIVE CHILDREN"},{ "code":"1.1.01", "name":"ACTIVE CHILDREN CHILDREN"}];const transformToTree =(arr, 루트 ='') => { 지도 ={}, 마지막 =[루트], 레벨 =0; 지도[루트] ={}; arr.forEach(el => { let parent =root; while (level &&last[level].length>=el.code.length) { level--; }; parent =last[level]; level++; last.length =레벨; last.push(el.code); 맵[el.code] =el; 맵[parent].children =맵[parent].children || []; 맵[parent].children.push(el); }); 반환 맵[root].children;};console.log(JSON.stringify(transformToTree(arr), undefined, 4));

출력

콘솔의 출력은 -

[ { "코드":"2", "이름":"보류 중", "자식":[ { "코드":"2.2", "이름":"보류 중인 자식", "자식":[ { "코드":"2.2.01.01", "이름":"보류 중인 어린이 어린이" }, { "코드":"2.2.01.02", "이름":" 보류 중인 어린이 어린이02" } ] } ] }, { "코드" ":"1", "이름":"활성", "자식":[ { "코드":"1.1", "이름":"활성 어린이", "자식":[ { "코드":"1.1. 01", "이름":"활성 어린이 어린이" } ] } ] }]