我有一个数组,可以说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
有人可以给我一些方法吗?
关于, 潘卡(Pankaj)
答案 0 :(得分:0)
您可以遍历字符串,拆分字符串,存储项目,然后遍历所有项目,方法是检查先前的数据集是否具有相同的值。 如果不是,则分配一个新节点并将下一级别存储在levels
数组中。
然后,将last
替换为temp
数组。
主要逻辑被包装在一个辅助数组中,该数组存储该级别最后插入的节点。这需要排序的数据集。
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; }