如何使用来自数组的JavaScript创建动态树?

时间:2019-02-21 13:32:56

标签: javascript

我有一个数组,可以说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)

1 个答案:

答案 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; }