问题描述
我有一个数组,比如说A[A.A1.A2,A.A1.A3,A.B1.B2,B.B1.B2,C.C1.C2]
现在我必须创建一个树结构,如下所示使用 javascript
A
A1
A2
A3
B1
B2
B1
B1
B2
C
C1
C2
任何人都可以给我一些想法如何做到这一点?
问候, 潘卡吉
1楼
Nina Scholz
0
已采纳
2019-02-21 14:06:09
您可以遍历字符串、拆分它们、存储项目,然后通过检查之前的数据集是否具有相同的值来遍历所有项目。
如果不是,则分配一个新节点并将下一个级别存储在levels
数组中。
然后,用temp
数组替换last
。
主要逻辑被包装在一个辅助数组中,该数组存储了关卡最后插入的节点。 这需要一个排序的数据集。
var array = ['A.A1.A2', 'A.A1.A3', 'A.B1.B2', 'B.B1.B2', 'C.C1.C2'], tree = [], levels = [tree], last = []; array.forEach(s => { var temp = s.split('.'); temp.forEach((name, i) => { if (last[i] === name) return; levels[i].push({ name, children: levels[i + 1] = [] }); }); last = temp; }); console.log(tree);
.as-console-wrapper { max-height: 100% !important; top: 0; }