function formSelectedTree(totaldata, selectedIds) {
if (!Array.isArray(totaldata)) return;
for (var item of totaldata) {
if ((!item.children || item.children.length === 0)) {
selectedIds.map(function(id, index) {
if (parseInt(item.id) === parseInt(id)) {
item.isSelected = true
item.open = true
}
})
} else {
this.formSelectedTree(item.children, selectedIds);
}
}
return totaldata
}
매개 변수를 사용하여 재귀 트리 수준의 계층 구조를 저장 : 오브젝트의자바 스크립트를
- totaldata 배열을
- selectedIds을 (JSON을 검색 할 수 있습니다) : 문자열의 배열을 (리프 노드의 아이디의) [ "1749", "1747"]
위의 재귀 함수는 json 객체와 같은 트리를 반복하는 것입니다. 백엔드에서 리프 노드의 ID를 얻고 있습니다.이 ID를 기반으로 리프 노드를 선택하고 부모 수준에서 트리 구조를 확장해야합니다.
'isSelected'부울 속성을 사용하여 선택을 처리합니다. 트리 노드의 확장은 'open'부울 속성을 사용하여 처리됩니다.
리프 노드에 대해 이러한 속성을 설정할 수 있습니다. 그러나 parent/sub-parent 수준에서 open = true를 설정하는 데 어려움을 겪습니다.
{
"Data": [{
"id": 1745,
"parentId": null,
"isSelected": false,
"open": false,
"children": [{
"id": 1746,
"parentId": 1745,
"isSelected": false,
"open": false,
"children": [{
"id": 1747,
"parentId": 1746,
"isSelected": false,
"open": false
},
{
"id": 1748,
"parentId": 1746,
"isSelected": false,
"open": false,
"children": [{
"id": 1749,
"parentId": 1748,
"isSelected": false,
"open": false
}]
}
]
}]
}]
}
사람이 어려움을 달성 나를 도울 수 아래의 샘플 JSON 객체를 찾아주세요.
감사