平铺目录数据处理成树状结构

最近有一个需求,将这样子的没有层级关系的平铺的目录,要处理成树状结构的数据,如下图:
平铺目录:

img


需要处理成的目录:

img

目前的数据结构是这样子:

 let dataArr = [
      { label: "第一编", target: "anchor_zhang0" },
      { label: "第一分编", target: "anchor_zhang1" },
      { label: "第一章", target: "anchor_zhang2" },
      { label: "第一节", target: "anchor_jie0" },
      { label: "第二节", target: "anchor_jie2" },
      { label: "第二分编", target: "anchor_zhang3" },
      { label: "第二编", target: "anchor_zhang4" },
      ...
    ];

目录的顺序是编、分编、章、节,但每个文章不一定都有这些目录,比如说可以是只有章、节,或者编、章、节,等等情况,但是节上一层肯定是章,分编上一层肯定是编,困惑很久都没能解决,有大l佬指点一下思路吗,十分感谢

编、章、节这些没有父类id吗??像现在这样只有label和target吗?那我怎么区分谁是谁的children

一层一层的处理,先处理编,循环,找到第一个编,把后面所有不是编的全部塞进第一个编里面,然后第二编作为root,后面所有不是编的塞进第二编里;
编处理完了,开始处理第二层,分编,所有不是分编的塞进分编里
再继续处理章,处理节,一层一层处理
每处理一层,要判断这一层最大的是什么,比如处理到分编的时候,发现根本一个分编都没有,直接是章,那就pass,等处理章的时候再来处理这一组