최근에는 추가, 삭제와 같은 다양한 트리 구조의 데이터 처리 로직을 포함하는 백엔드 관리 시스템에 대한 권한 관리 모듈을 개발하고 있습니다. , 수정, 쿼리 등 일반적인 배열 구조 데이터에 비해 트리 구조 처리는 배열만큼 직관적이지는 않지만 데이터의 심층 탐색을 수행하려면 한 단계 더 필요합니다. 여기에서 블로거는 제가 생각해낸 방법을 공유할 개발 프로세스도 요약할 것입니다. 이 기사에서는 JS 트리 구조 데이터 처리에 대한 철저한 이해를 제공할 것입니다.
데이터 구조 예
let data = [{ 아이디: 1, 라벨: '레벨 1', 어린이들: [{ 아이디: 4, 라벨: '레벨 1-1', 어린이들: [{ 아이디: 9, 라벨: '레벨 3 1-1-1' }, { 아이디: 10, 라벨: '레벨 3 1-1-2' }] }] }, { 아이디: 2, 라벨: '레벨 2', 어린이들: [{ 아이디: 5, 라벨: '레벨 2-1' }, { 아이디: 6, 라벨: '레벨 2-2' }] }, { 아이디: 3, 라벨: '레벨 3', 어린이들: [{ 아이디: 7, 라벨: '레벨 2 3-1' }, { 아이디: 8, 라벨: '레벨 3-2' }] }];
트리 구조에서 지정된 노드를 찾고 새 하위 노드를 추가합니다.
constappendNodeInTree = (id, tree, obj) => { tree.forEach(ele=> { if (ele.id === id) { ele.children ? ele.children.push(obj) : ele.children = [obj] } 또 다른 { if (ele.children) { AppendNodeInTree(id, ele.children, obj) } } }) 반환 트리 }
트리 구조에서 지정된 노드를 찾아 삭제합니다. 코드는 다음과 같습니다.
const RemoveNodeInTree=(treeList, id)=> { // id별로 배열(트리 구조)에서 요소를 제거합니다. (!treeList || ! treeList.length) { 반품 } for (let i = 0; i < treeList.length; i++) { if (treeList[i].id === id) { treeList.splice(i, 1); 부서지다; } RemoveNodeInTree(treeList[i].children, id) } }
재귀적으로 검색하고 노드의 상태를 수정하도록 수정합니다. 코드는 다음과 같습니다.
const updateNodeInTree=(treeList,id, obj)=> { if (!treeList || !treeList.length) { 반품; } for (let i = 0; i < treeList.length; i++) { if (treeList[i].id == id) { treeList[i]= obj; 부서지다; } updateNodeInTree(treeList[i].children,id,obj); } }4.
트리 노드에서 노드를 찾기 위해 재귀적으로
const findNodeInTree = (data, key, callback) => { for (let i = 0; i < data.length; i++) { if (data[i].key == 키) { 콜백(데이터[i], i, 데이터) 반환 } if (data[i].children) { findNodeInTree(data[i].children, 키, 콜백) } } } //발견된 노드를 저장하는 방법 let Obj={} findNodeInTree(data, key, (item, index, arr) => { Obj = 아이템 }) // Obj에 해당하는 노드를 찾습니다. console.log(Obj)